<?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>86943</bug_id>
          
          <creation_ts>2012-05-19 07:27:11 -0700</creation_ts>
          <short_desc>Blocking `setTimeout` and `setInterval` evaluation with CSP should include a stack trace in the console warning.</short_desc>
          <delta_ts>2012-05-21 16:00: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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mike West">mkwst</reporter>
          <assigned_to name="Mike West">mkwst</assigned_to>
          <cc>abarth</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>pfeldman</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>628410</commentid>
    <comment_count>0</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-05-19 07:27:11 -0700</bug_when>
    <thetext>Along the same lines as http://webk.it/86848, the error message for CSP-blocked `setTimeout` and `setInterval` calls don&apos;t give developers enough information to debug the issue. We should include a stack trace with the error so they can jump directly to the offending line.

I&apos;ve got a patch together that does this, but I&apos;m a bit worried that it&apos;s making the CSP interface pretty complex (especially in conjunction with 86848, and some CSP 1.1 work).

I&apos;d also like to add a test to verify that a call stack is present, but I&apos;m not exactly sure how I can track that down from JavaScript. I dug through the inspector tests currently in the system, but nothing seemed to fit the use case. Suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628412</commentid>
    <comment_count>1</comment_count>
      <attachid>142866</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-05-19 07:35:31 -0700</bug_when>
    <thetext>Created attachment 142866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628415</commentid>
    <comment_count>2</comment_count>
      <attachid>142866</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-19 08:03:05 -0700</bug_when>
    <thetext>Comment on attachment 142866
Patch

Attachment 142866 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12729378</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628454</commentid>
    <comment_count>3</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-05-19 11:25:59 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; I&apos;d also like to add a test to verify that a call stack is present, but I&apos;m not exactly sure how I can track that down from JavaScript. I dug through the inspector tests currently in the system, but nothing seemed to fit the use case. Suggestions?

I think that InspectorTest.dumpConsoleMessages() should do the trick (see LayoutTests/inspector/console/)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628556</commentid>
    <comment_count>4</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-05-20 00:41:08 -0700</bug_when>
    <thetext>After digging a bit, it looks like the InspectorTest framework isn&apos;t playing nicely with CSP. If I inject `&lt;meta http-equiv=&quot;X-WebKit-CSP&quot; content=&quot;script-src &apos;unsafe-inline&apos; &apos;self&apos;&quot;&gt;` into http/tests/inspector/console-cd.html, for example, it times out. I&apos;m not exactly sure where it&apos;s dying, but it&apos;s entirely possible that it relies on `eval` (in the form of `RuntimeAgent.evaluate`).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628744</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-20 21:00:41 -0700</bug_when>
    <thetext>The code in this patch looks fine, but we should have a test.  I&apos;m not sure what to do about the test harness using eval...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628895</commentid>
    <comment_count>6</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-05-21 02:14:25 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; The code in this patch looks fine, but we should have a test.  I&apos;m not sure what to do about the test harness using eval...

I would recommend to add a function to window.internals that returns the recorded console messages, doing basically the same as InspectorTest.dumpConsoleMessages, just without depending on InspectorTest</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628897</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-21 02:17:19 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; The code in this patch looks fine, but we should have a test.  I&apos;m not sure what to do about the test harness using eval...
&gt; 
&gt; I would recommend to add a function to window.internals that returns the recorded console messages, doing basically the same as InspectorTest.dumpConsoleMessages, just without depending on InspectorTest

+1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629010</commentid>
    <comment_count>8</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-05-21 05:50:16 -0700</bug_when>
    <thetext>As it turns out, this isn&apos;t an `eval` problem. It&apos;s an inspector test issue.

Long story short, if I copy my test into the `http/tests/inspector` directory, things work as expected. If I don&apos;t, I get timeouts. Jochen suggested that there might be a separate inspector agent process that&apos;s only spun up if certain tests are executed.

It looks like `http/tests/inspector-enabled` is there for exactly this purpose; I&apos;m adding tests there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629015</commentid>
    <comment_count>9</comment_count>
      <attachid>143014</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-05-21 06:02:03 -0700</bug_when>
    <thetext>Created attachment 143014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629027</commentid>
    <comment_count>10</comment_count>
      <attachid>143014</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-21 06:17:31 -0700</bug_when>
    <thetext>Comment on attachment 143014
Patch

Attachment 143014 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12733602</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629150</commentid>
    <comment_count>11</comment_count>
      <attachid>143014</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-21 09:05:42 -0700</bug_when>
    <thetext>Comment on attachment 143014
Patch

Looks like you&apos;ve got some sort of problem on apple-win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629173</commentid>
    <comment_count>12</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-05-21 09:20:01 -0700</bug_when>
    <thetext>Yeah, it looks like the compiler is picking the wrong `isAllowedByAll` and throwing type errors. Would you mind terribly if I simply renamed the function to something like `isAllowedByAllWithCallStack` instead of overloading the `isAllowedByAll` that takes a KURL?

We&apos;d end up with something like CSP::isAllowedByAll, CSP::isAllowedByAllWithCallStack, and CSP::isAllowedByAllWithKURL, which is ugly, but simpler to understand than digging through Windows&apos; template specialization rules.

(It might, of course, just be something simple that I&apos;m overlooking...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629183</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-21 09:25:41 -0700</bug_when>
    <thetext>That&apos;s fine.  These functions are only used in this file, so it&apos;s ok if their names a bit wonky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629334</commentid>
    <comment_count>14</comment_count>
      <attachid>143070</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-05-21 11:52:06 -0700</bug_when>
    <thetext>Created attachment 143070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629659</commentid>
    <comment_count>15</comment_count>
      <attachid>143070</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-21 16:00:02 -0700</bug_when>
    <thetext>Comment on attachment 143070
Patch

Clearing flags on attachment: 143070

Committed r117826: &lt;http://trac.webkit.org/changeset/117826&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629660</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-21 16:00:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142866</attachid>
            <date>2012-05-19 07:35:31 -0700</date>
            <delta_ts>2012-05-21 06:01:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86943-20120519163531.patch</filename>
            <type>text/plain</type>
            <size>9711</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk0ZjFlNTFmMzQ4ZDA0
Mjg4MWZhNGE3MTVlMjA5M2JjNjY2ZDRmMC4uYTUxNThiOGZkN2VhNTdlYTQzNTE5ZGViZmU5ZWE2
YTU4NzdjZDBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA1LTE5ICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wcm92aW5nIGNvbnNvbGUg
ZXJyb3IgZm9yIENTUC1ibG9ja2VkICBgc2V0VGltZW91dGAgYW5kIGBzZXRJbnRlcnZhbGAgZXZh
bHVhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg2OTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SWYgdGhlIGluc3BlY3RvciBpcyBvcGVuLCBhIHN0YWNrIHRyYWNlIGlzIGdlbmVyYXRlZCBiZWZv
cmUgY2FsbGluZworICAgICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93RXZhbCwgYW5k
IHBhc3NlZCB0aHJvdWdoIHRvCisgICAgICAgIDo6cmVwb3J0VmlvbGF0aW9uIGZvciB1c2UgaW4g
dGhlIGNvbnNvbGUgbWVzc2FnZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHlldC4gV29ya2lu
ZyBvbiBpdCEgKE9PUFMhKQorCisgICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2luZG93U2V0VGltZW91dEltcGwpOgorICAgICAgICAqIHBhZ2UvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKENTUERpcmVjdGl2ZUxpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6cmVwb3J0VmlvbGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrRXZhbEFuZFJlcG9ydFZpb2xhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0V2YWwpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjppc0FsbG93ZWRCeUFsbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93RXZhbCk6CisgICAgICAgICogcGFn
ZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA1
LTE3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXSBLVVJMOjpmaWxlU3lzdGVtUGF0aCgpIHNob3VsZCBzdHJpcCB0aGUgcXVlcnkgb2Yg
dGhlIHVyaQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVk
QWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5j
cHAKaW5kZXggYTEzYzNhNjVmZjFiZjA4NjVhZjg4ZjZkMmM0ZDk3NzFlYjI3MGZlMC4uMTkwNjkw
NWYwYTc1NTM3YWQxZDc5Mzg4OGJjNTM5YzI2Mjc2MDFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw4IEBACiAjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRl
ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIK
KyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJTY3JpcHRTb3VyY2VDb2RlLmgiCkBAIC01Myw3ICs1NSw4IEBAIFBhc3NPd25QdHI8U2NoZWR1
bGVkQWN0aW9uPiBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIERPTVdy
YXBwZXJXCiAgICAgSlNWYWx1ZSB2ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgaWYgKGdldENhbGxEYXRhKHYsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5v
bmUpIHsKLSAgICAgICAgaWYgKHBvbGljeSAmJiAhcG9saWN5LT5hbGxvd0V2YWwoKSkKKyAgICAg
ICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFj
a0Zvckluc3BlY3RvcihleGVjKSk7CisgICAgICAgIGlmIChwb2xpY3kgJiYgIXBvbGljeS0+YWxs
b3dFdmFsKGNhbGxTdGFjay5yZWxlYXNlKCkpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIFVTdHJpbmcgc3RyaW5nID0gdi50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDJh
YmNmM2NhNjIxOGI5YmYyZDM1Njc5ZDgxODZiYzA4MGY4YjkwOTQuLjMxYmQ0Y2Q3YjA4MGE3YTdl
MTQzMGNhNGVkNGI4ZDdjNjk5M2E1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDgsNiArNDgsOCBA
QAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1
ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgorI2lu
Y2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VD
b2RlLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKQEAgLTEyOSw3ICsxMzEsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2luZG93
U2V0VGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogCiAg
ICAgICAgIGlkID0gRE9NVGltZXI6Omluc3RhbGwoc2NyaXB0Q29udGV4dCwgYWN0aW9uLnJlbGVh
c2UoKSwgdGltZW91dCwgc2luZ2xlU2hvdCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGlt
cC0+ZG9jdW1lbnQoKSAmJiAhaW1wLT5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KS0+YWxsb3dFdmFsKCkpCisgICAgICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFj
ayhjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoKSk7CisgICAgICAgIGlmIChpbXAt
PmRvY3VtZW50KCkgJiYgIWltcC0+ZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkt
PmFsbG93RXZhbChjYWxsU3RhY2sucmVsZWFzZSgpKSkKICAgICAgICAgICAgIHJldHVybiB2ODo6
SW50ZWdlcjo6TmV3KDApOwogICAgICAgICBpZCA9IERPTVRpbWVyOjppbnN0YWxsKHNjcmlwdENv
bnRleHQsIGFkb3B0UHRyKG5ldyBTY2hlZHVsZWRBY3Rpb24oVjhQcm94eTo6Y29udGV4dChpbXAt
PmZyYW1lKCkpLCBmdW5jdGlvblN0cmluZykpLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXgg
MGU3Yzk1YTdlMjlkYWI0M2Y0MDllNmE2Y2IxMjJlNWZlYWExM2Q4ZS4uM2UyYzJmMTc0MmRiZGE4
ODc2YTJiZDA1NDk4Y2IyY2U0OWY5YmNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtNDk0LDcgKzQ5NCw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGFsbG93SW5saW5lRXZlbnRIYW5kbGVycygpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dJbmxp
bmVTY3JpcHQoKSBjb25zdDsKICAgICBib29sIGFsbG93SW5saW5lU3R5bGUoKSBjb25zdDsKLSAg
ICBib29sIGFsbG93RXZhbCgpIGNvbnN0OworICAgIGJvb2wgYWxsb3dFdmFsKFBhc3NSZWZQdHI8
U2NyaXB0Q2FsbFN0YWNrPikgY29uc3Q7CiAKICAgICBib29sIGFsbG93U2NyaXB0RnJvbVNvdXJj
ZShjb25zdCBLVVJMJikgY29uc3Q7CiAgICAgYm9vbCBhbGxvd09iamVjdEZyb21Tb3VyY2UoY29u
c3QgS1VSTCYpIGNvbnN0OwpAQCAtNTE4LDEyICs1MTgsMTIgQEAgcHJpdmF0ZToKICAgICBQYXNz
T3duUHRyPENTUERpcmVjdGl2ZT4gY3JlYXRlQ1NQRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICBDU1BEaXJlY3RpdmUqIG9wZXJhdGl2ZURp
cmVjdGl2ZShDU1BEaXJlY3RpdmUqKSBjb25zdDsKLSAgICB2b2lkIHJlcG9ydFZpb2xhdGlvbihj
b25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2Us
IGNvbnN0IEtVUkwmIGJsb2NrZWRVUkwgPSBLVVJMKCkpIGNvbnN0OworICAgIHZvaWQgcmVwb3J0
VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBjb25z
b2xlTWVzc2FnZSwgY29uc3QgS1VSTCYgYmxvY2tlZFVSTCA9IEtVUkwoKSwgUGFzc1JlZlB0cjxT
Y3JpcHRDYWxsU3RhY2s+ID0gMCkgY29uc3Q7CiAgICAgdm9pZCBsb2dVbnJlY29nbml6ZWREaXJl
Y3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBib29sIGNoZWNrRXZhbChDU1BE
aXJlY3RpdmUqKSBjb25zdDsKIAogICAgIGJvb2wgY2hlY2tJbmxpbmVBbmRSZXBvcnRWaW9sYXRp
b24oQ1NQRGlyZWN0aXZlKiwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSkgY29uc3Q7Ci0g
ICAgYm9vbCBjaGVja0V2YWxBbmRSZXBvcnRWaW9sYXRpb24oQ1NQRGlyZWN0aXZlKiwgY29uc3Qg
U3RyaW5nJiBjb25zb2xlTWVzc2FnZSkgY29uc3Q7CisgICAgYm9vbCBjaGVja0V2YWxBbmRSZXBv
cnRWaW9sYXRpb24oQ1NQRGlyZWN0aXZlKiwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwg
UGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KSBjb25zdDsKICAgICBib29sIGNoZWNrU291cmNl
QW5kUmVwb3J0VmlvbGF0aW9uKENTUERpcmVjdGl2ZSosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmIHR5cGUpIGNvbnN0OwogCiAgICAgYm9vbCBkZW55SWZFbmZvcmNpbmdQb2xpY3koKSBjb25z
dCB7IHJldHVybiBtX3JlcG9ydE9ubHk7IH0KQEAgLTU3NSwxMCArNTc1LDEwIEBAIFBhc3NPd25Q
dHI8Q1NQRGlyZWN0aXZlTGlzdD4gQ1NQRGlyZWN0aXZlTGlzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjCiAgICAgcmV0dXJuIHBvbGljeS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQg
Q1NQRGlyZWN0aXZlTGlzdDo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZl
VGV4dCwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgS1VSTCYgYmxvY2tlZFVS
TCkgY29uc3QKK3ZvaWQgQ1NQRGlyZWN0aXZlTGlzdDo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0
cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3Qg
S1VSTCYgYmxvY2tlZFVSTCwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykg
Y29uc3QKIHsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1fcmVwb3J0T25seSA/ICJbUmVwb3J0IE9u
bHldICIgKyBjb25zb2xlTWVzc2FnZSA6IGNvbnNvbGVNZXNzYWdlOwotICAgIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UpOworICAgIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIFN0cmluZygpLCAwLCBjYWxsU3RhY2sp
OwogCiAgICAgaWYgKG1fcmVwb3J0VVJJcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTY0NiwxMSArNjQ2LDExIEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tJbmxpbmVBbmRS
ZXBvcnRWaW9sYXRpb24oQ1NQRGlyZWN0aXZlKiBkaXJlY3RpdmUsIGNvCiAgICAgcmV0dXJuIGRl
bnlJZkVuZm9yY2luZ1BvbGljeSgpOwogfQogCi1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNr
RXZhbEFuZFJlcG9ydFZpb2xhdGlvbihDU1BEaXJlY3RpdmUqIGRpcmVjdGl2ZSwgY29uc3QgU3Ry
aW5nJiBjb25zb2xlTWVzc2FnZSkgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tF
dmFsQW5kUmVwb3J0VmlvbGF0aW9uKENTUERpcmVjdGl2ZSogZGlyZWN0aXZlLCBjb25zdCBTdHJp
bmcmIGNvbnNvbGVNZXNzYWdlLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNr
KSBjb25zdAogewogICAgIGlmIChjaGVja0V2YWwoZGlyZWN0aXZlKSkKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgcmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2ZS0+dGV4dCgpLCBjb25zb2xlTWVz
c2FnZSArICJcIiIgKyBkaXJlY3RpdmUtPnRleHQoKSArICJcIi5cbiIpOworICAgIHJlcG9ydFZp
b2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgY29uc29sZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0
aXZlLT50ZXh0KCkgKyAiXCIuXG4iLCBLVVJMKCksIGNhbGxTdGFjayk7CiAgICAgcmV0dXJuIGRl
bnlJZkVuZm9yY2luZ1BvbGljeSgpOwogfQogCkBAIC02ODcsMTAgKzY4NywxMCBAQCBib29sIENT
UERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGUoKSBjb25zdAogICAgIHJldHVybiBjaGVj
a0lubGluZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9zdHlsZVNyYy5n
ZXQoKSksIGNvbnNvbGVNZXNzYWdlKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxv
d0V2YWwoKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0V2YWwoUGFzc1JlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykgY29uc3QKIHsKICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgiUmVmdXNlZCB0byBldmFsdWF0ZSBzY3Jp
cHQgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9s
aWN5IGRpcmVjdGl2ZTogIikpOwotICAgIHJldHVybiBjaGVja0V2YWxBbmRSZXBvcnRWaW9sYXRp
b24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSwgY29uc29sZU1lc3NhZ2Up
OworICAgIHJldHVybiBjaGVja0V2YWxBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0
aXZlKG1fc2NyaXB0U3JjLmdldCgpKSwgY29uc29sZU1lc3NhZ2UsIGNhbGxTdGFjayk7CiB9CiAK
IGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IEtVUkwm
IHVybCkgY29uc3QKQEAgLTkzMyw2ICs5MzMsMTYgQEAgYm9vbCBpc0FsbG93ZWRCeUFsbChjb25z
dCBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yJiBwb2xpY2llcykKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAordGVtcGxhdGU8Ym9vbCAoQ1NQRGlyZWN0aXZlTGlzdDo6KmFsbG93ZWQpKFBhc3NSZWZQdHI8
U2NyaXB0Q2FsbFN0YWNrPikgY29uc3Q+Citib29sIGlzQWxsb3dlZEJ5QWxsKGNvbnN0IENTUERp
cmVjdGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVzLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4g
Y2FsbFN0YWNrKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9saWNpZXMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgaWYgKCEocG9saWNpZXNbaV0uZ2V0KCktPiphbGxvd2VkKShjYWxs
U3RhY2spKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogdGVtcGxhdGU8Ym9vbCAoQ1NQRGlyZWN0aXZlTGlzdDo6KmFsbG93RnJvbVVSTCko
Y29uc3QgS1VSTCYpIGNvbnN0PgogYm9vbCBpc0FsbG93ZWRCeUFsbChjb25zdCBDU1BEaXJlY3Rp
dmVMaXN0VmVjdG9yJiBwb2xpY2llcywgY29uc3QgS1VSTCYgdXJsKQogewpAQCAtOTY1LDkgKzk3
NSw5IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVN0eWxlKCkgY29u
c3QKICAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5s
aW5lU3R5bGU+KG1fcG9saWNpZXMpOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
YWxsb3dFdmFsKCkgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0V2YWwo
UGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykgY29uc3QKIHsKLSAgICByZXR1
cm4gaXNBbGxvd2VkQnlBbGw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbD4obV9wb2xpY2ll
cyk7CisgICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0V2
YWw+KG1fcG9saWNpZXMsIGNhbGxTdGFjayk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKaW5kZXggZjEzMDE0ZjEzMWY1
NzBiZmJiNjA1OWE1Mjg2YWNkZDgwMTg0YjVjYy4uMTljNDY1ZTNiMDBlY2EyYzM5NzgwNTY4ZjY1
Yzg1NzJiMWQ3NzNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENT
UERpcmVjdGl2ZUxpc3Q7CitjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogY2xhc3MgS1VSTDsKIApAQCAtNjUsNyArNjYsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBhbGxvd0lubGluZUV2ZW50SGFuZGxlcnMoKSBjb25zdDsKICAgICBib29sIGFsbG93
SW5saW5lU2NyaXB0KCkgY29uc3Q7CiAgICAgYm9vbCBhbGxvd0lubGluZVN0eWxlKCkgY29uc3Q7
Ci0gICAgYm9vbCBhbGxvd0V2YWwoKSBjb25zdDsKKyAgICBib29sIGFsbG93RXZhbChQYXNzUmVm
UHRyPFNjcmlwdENhbGxTdGFjaz4pIGNvbnN0OwogCiAgICAgYm9vbCBhbGxvd1NjcmlwdEZyb21T
b3VyY2UoY29uc3QgS1VSTCYpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dPYmplY3RGcm9tU291cmNl
KGNvbnN0IEtVUkwmKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143014</attachid>
            <date>2012-05-21 06:02:03 -0700</date>
            <delta_ts>2012-05-21 11:51:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86943-20120521150202.patch</filename>
            <type>text/plain</type>
            <size>16135</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk0ZjFlNTFmMzQ4ZDA0
Mjg4MWZhNGE3MTVlMjA5M2JjNjY2ZDRmMC4uNzdlZDM5OTUxYTgzYTlhYzJmODU3MDlhZjAzYTQ2
YzgxNTYzNDQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA1LTIxICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wcm92aW5nIGNvbnNvbGUg
ZXJyb3IgZm9yIENTUC1ibG9ja2VkICBgc2V0VGltZW91dGAgYW5kIGBzZXRJbnRlcnZhbGAgZXZh
bHVhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg2OTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SWYgdGhlIGluc3BlY3RvciBpcyBvcGVuLCBhIHN0YWNrIHRyYWNlIGlzIGdlbmVyYXRlZCBiZWZv
cmUgY2FsbGluZworICAgICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93RXZhbCwgYW5k
IHBhc3NlZCB0aHJvdWdoIHRvCisgICAgICAgIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0
VmlvbGF0aW9uIGZvciB1c2UgaW4gdGhlIGNvbnNvbGUgbWVzc2FnZS4KKworICAgICAgICBUZXN0
OiBodHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnRlbnRTZWN1cml0eVBvbGljeS1ibG9j
a3Mtc2V0SW50ZXJ2YWwuaHRtbAorICAgICAgICAgICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci1l
bmFibGVkL2NvbnRlbnRTZWN1cml0eVBvbGljeS1ibG9ja3Mtc2V0VGltZW91dC5odG1sCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dTZXRUaW1l
b3V0SW1wbCk6CisgICAgICAgICogcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAg
ICAgICAoQ1NQRGlyZWN0aXZlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1BEaXJlY3RpdmVM
aXN0OjpyZXBvcnRWaW9sYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlz
dDo6Y2hlY2tFdmFsQW5kUmVwb3J0VmlvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERp
cmVjdGl2ZUxpc3Q6OmFsbG93RXZhbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzQWxsb3dlZEJ5QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dFdmFsKToKKyAgICAgICAgKiBwYWdlL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5oOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDUtMTcgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEtVUkw6OmZpbGVTeXN0
ZW1QYXRoKCkgc2hvdWxkIHN0cmlwIHRoZSBxdWVyeSBvZiB0aGUgdXJpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCBhMTNjM2E2NWZmMWJm
MDg2NWFmODhmNmQyYzRkOTc3MWViMjcwZmUwLi4xOTA2OTA1ZjBhNzU1MzdhZDFkNzkzODg4YmM1
MzljMjYyNzYwMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hl
ZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
ICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0
ZS5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxT
dGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIK
QEAgLTUzLDcgKzU1LDggQEAgUGFzc093blB0cjxTY2hlZHVsZWRBY3Rpb24+IFNjaGVkdWxlZEFj
dGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRE9NV3JhcHBlclcKICAgICBKU1ZhbHVlIHYg
PSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBpZiAoZ2V0
Q2FsbERhdGEodiwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICBpZiAocG9s
aWN5ICYmICFwb2xpY3ktPmFsbG93RXZhbCgpKQorICAgICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0
YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9ySW5zcGVjdG9yKGV4ZWMpKTsK
KyAgICAgICAgaWYgKHBvbGljeSAmJiAhcG9saWN5LT5hbGxvd0V2YWwoY2FsbFN0YWNrLnJlbGVh
c2UoKSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgVVN0cmluZyBzdHJp
bmcgPSB2LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMmFiY2YzY2E2MjE4YjliZjJkMzU2Nzlk
ODE4NmJjMDgwZjhiOTA5NC4uMzFiZDRjZDdiMDgwYTdhN2UxNDMwY2E0ZWQ0YjhkN2M2OTkzYTU4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2lu
ZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
T01XaW5kb3dDdXN0b20uY3BwCkBAIC00OCw2ICs0OCw4IEBACiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgi
CisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtMTI5LDcgKzEz
MSw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXaW5kb3dTZXRUaW1lb3V0SW1wbChjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHNpbmdsCiAKICAgICAgICAgaWQgPSBET01UaW1lcjo6
aW5zdGFsbChzY3JpcHRDb250ZXh0LCBhY3Rpb24ucmVsZWFzZSgpLCB0aW1lb3V0LCBzaW5nbGVT
aG90KTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoaW1wLT5kb2N1bWVudCgpICYmICFpbXAt
PmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0V2YWwoKSkKKyAgICAg
ICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFj
a0Zvckluc3BlY3RvcigpKTsKKyAgICAgICAgaWYgKGltcC0+ZG9jdW1lbnQoKSAmJiAhaW1wLT5k
b2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dFdmFsKGNhbGxTdGFjay5y
ZWxlYXNlKCkpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcoMCk7CiAgICAg
ICAgIGlkID0gRE9NVGltZXI6Omluc3RhbGwoc2NyaXB0Q29udGV4dCwgYWRvcHRQdHIobmV3IFNj
aGVkdWxlZEFjdGlvbihWOFByb3h5Ojpjb250ZXh0KGltcC0+ZnJhbWUoKSksIGZ1bmN0aW9uU3Ry
aW5nKSksIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCAwZTdjOTVhN2UyOWRhYjQzZjQwOWU2
YTZjYjEyMmU1ZmVhYTEzZDhlLi4zZTJjMmYxNzQyZGJkYTg4NzZhMmJkMDU0OThjYjJjZTQ5Zjli
Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CkBAIC00OTQsNyArNDk0LDcgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dJbmxpbmVFdmVudEhh
bmRsZXJzKCkgY29uc3Q7CiAgICAgYm9vbCBhbGxvd0lubGluZVNjcmlwdCgpIGNvbnN0OwogICAg
IGJvb2wgYWxsb3dJbmxpbmVTdHlsZSgpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dFdmFsKCkgY29u
c3Q7CisgICAgYm9vbCBhbGxvd0V2YWwoUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KSBjb25z
dDsKIAogICAgIGJvb2wgYWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IEtVUkwmKSBjb25zdDsK
ICAgICBib29sIGFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25zdCBLVVJMJikgY29uc3Q7CkBAIC01
MTgsMTIgKzUxOCwxMiBAQCBwcml2YXRlOgogICAgIFBhc3NPd25QdHI8Q1NQRGlyZWN0aXZlPiBj
cmVhdGVDU1BEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
KTsKIAogICAgIENTUERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlKENTUERpcmVjdGl2ZSop
IGNvbnN0OwotICAgIHZvaWQgcmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZl
VGV4dCwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgS1VSTCYgYmxvY2tlZFVS
TCA9IEtVUkwoKSkgY29uc3Q7CisgICAgdm9pZCByZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5n
JiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBLVVJM
JiBibG9ja2VkVVJMID0gS1VSTCgpLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gPSAwKSBj
b25zdDsKICAgICB2b2lkIGxvZ1VucmVjb2duaXplZERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5h
bWUpIGNvbnN0OwogICAgIGJvb2wgY2hlY2tFdmFsKENTUERpcmVjdGl2ZSopIGNvbnN0OwogCiAg
ICAgYm9vbCBjaGVja0lubGluZUFuZFJlcG9ydFZpb2xhdGlvbihDU1BEaXJlY3RpdmUqLCBjb25z
dCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlKSBjb25zdDsKLSAgICBib29sIGNoZWNrRXZhbEFuZFJl
cG9ydFZpb2xhdGlvbihDU1BEaXJlY3RpdmUqLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdl
KSBjb25zdDsKKyAgICBib29sIGNoZWNrRXZhbEFuZFJlcG9ydFZpb2xhdGlvbihDU1BEaXJlY3Rp
dmUqLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxT
dGFjaz4pIGNvbnN0OwogICAgIGJvb2wgY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24oQ1NQ
RGlyZWN0aXZlKiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAKICAg
ICBib29sIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwb3J0T25s
eTsgfQpAQCAtNTc1LDEwICs1NzUsMTAgQEAgUGFzc093blB0cjxDU1BEaXJlY3RpdmVMaXN0PiBD
U1BEaXJlY3RpdmVMaXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2MKICAgICBy
ZXR1cm4gcG9saWN5LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBDU1BEaXJlY3RpdmVMaXN0OjpyZXBv
cnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGNv
bnNvbGVNZXNzYWdlLCBjb25zdCBLVVJMJiBibG9ja2VkVVJMKSBjb25zdAordm9pZCBDU1BEaXJl
Y3RpdmVMaXN0OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBj
b25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBLVVJMJiBibG9ja2VkVVJMLCBQYXNz
UmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKSBjb25zdAogewogICAgIFN0cmluZyBt
ZXNzYWdlID0gbV9yZXBvcnRPbmx5ID8gIltSZXBvcnQgT25seV0gIiArIGNvbnNvbGVNZXNzYWdl
IDogY29uc29sZU1lc3NhZ2U7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25z
b2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgbWVzc2FnZSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xl
TWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgbWVzc2FnZSwgU3RyaW5nKCksIDAsIGNhbGxTdGFjayk7CiAKICAgICBpZiAobV9yZXBvcnRV
UklzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjQ2LDExICs2NDYsMTEgQEAgYm9v
bCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja0lubGluZUFuZFJlcG9ydFZpb2xhdGlvbihDU1BEaXJl
Y3RpdmUqIGRpcmVjdGl2ZSwgY28KICAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7
CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tFdmFsQW5kUmVwb3J0VmlvbGF0aW9u
KENTUERpcmVjdGl2ZSogZGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlKSBj
b25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja0V2YWxBbmRSZXBvcnRWaW9sYXRpb24o
Q1NQRGlyZWN0aXZlKiBkaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIFBh
c3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spIGNvbnN0CiB7CiAgICAgaWYgKGNo
ZWNrRXZhbChkaXJlY3RpdmUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXBvcnRWaW9s
YXRpb24oZGlyZWN0aXZlLT50ZXh0KCksIGNvbnNvbGVNZXNzYWdlICsgIlwiIiArIGRpcmVjdGl2
ZS0+dGV4dCgpICsgIlwiLlxuIik7CisgICAgcmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2ZS0+dGV4
dCgpLCBjb25zb2xlTWVzc2FnZSArICJcIiIgKyBkaXJlY3RpdmUtPnRleHQoKSArICJcIi5cbiIs
IEtVUkwoKSwgY2FsbFN0YWNrKTsKICAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7
CiB9CiAKQEAgLTY4NywxMCArNjg3LDEwIEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJ
bmxpbmVTdHlsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0
aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3N0eWxlU3JjLmdldCgpKSwgY29uc29sZU1lc3NhZ2Up
OwogfQogCi1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbCgpIGNvbnN0Citib29sIENT
UERpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbChQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2Fs
bFN0YWNrKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xl
TWVzc2FnZSwgKCJSZWZ1c2VkIHRvIGV2YWx1YXRlIHNjcmlwdCBiZWNhdXNlIGl0IHZpb2xhdGVz
IHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSk7Ci0g
ICAgcmV0dXJuIGNoZWNrRXZhbEFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUo
bV9zY3JpcHRTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSk7CisgICAgcmV0dXJuIGNoZWNrRXZh
bEFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkp
LCBjb25zb2xlTWVzc2FnZSwgY2FsbFN0YWNrKTsKIH0KIAogYm9vbCBDU1BEaXJlY3RpdmVMaXN0
OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdApAQCAtOTMzLDYg
KzkzMywxNiBAQCBib29sIGlzQWxsb3dlZEJ5QWxsKGNvbnN0IENTUERpcmVjdGl2ZUxpc3RWZWN0
b3ImIHBvbGljaWVzKQogICAgIHJldHVybiB0cnVlOwogfQogCit0ZW1wbGF0ZTxib29sIChDU1BE
aXJlY3RpdmVMaXN0OjoqYWxsb3dlZCkoUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KSBjb25z
dD4KK2Jvb2wgaXNBbGxvd2VkQnlBbGwoY29uc3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9s
aWNpZXMsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCit7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwb2xpY2llcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAo
IShwb2xpY2llc1tpXS5nZXQoKS0+KmFsbG93ZWQpKGNhbGxTdGFjaykpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiB0ZW1wbGF0ZTxib29s
IChDU1BEaXJlY3RpdmVMaXN0OjoqYWxsb3dGcm9tVVJMKShjb25zdCBLVVJMJikgY29uc3Q+CiBi
b29sIGlzQWxsb3dlZEJ5QWxsKGNvbnN0IENTUERpcmVjdGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVz
LCBjb25zdCBLVVJMJiB1cmwpCiB7CkBAIC05NjUsOSArOTc1LDkgQEAgYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU3R5bGUoKSBjb25zdAogICAgIHJldHVybiBpc0FsbG93
ZWRCeUFsbDwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTdHlsZT4obV9wb2xpY2llcyk7
CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0V2YWwoKSBjb25zdAorYm9v
bCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93RXZhbChQYXNzUmVmUHRyPFNjcmlwdENhbGxT
dGFjaz4gY2FsbFN0YWNrKSBjb25zdAogewotICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbDwmQ1NQ
RGlyZWN0aXZlTGlzdDo6YWxsb3dFdmFsPihtX3BvbGljaWVzKTsKKyAgICByZXR1cm4gaXNBbGxv
d2VkQnlBbGw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbD4obV9wb2xpY2llcywgY2FsbFN0
YWNrKTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U2NyaXB0RnJvbVNv
dXJjZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50
U2VjdXJpdHlQb2xpY3kuaAppbmRleCBmMTMwMTRmMTMxZjU3MGJmYmI2MDU5YTUyODZhY2RkODAx
ODRiNWNjLi4xOWM0NjVlM2IwMGVjYTJjMzk3ODA1NjhmNjVjODU3MmIxZDc3M2RhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKQEAgLTM0LDYgKzM0LDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NQRGlyZWN0aXZlTGlzdDsKK2NsYXNz
IFNjcmlwdENhbGxTdGFjazsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBL
VVJMOwogCkBAIC02NSw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93SW5saW5lRXZl
bnRIYW5kbGVycygpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dJbmxpbmVTY3JpcHQoKSBjb25zdDsK
ICAgICBib29sIGFsbG93SW5saW5lU3R5bGUoKSBjb25zdDsKLSAgICBib29sIGFsbG93RXZhbCgp
IGNvbnN0OworICAgIGJvb2wgYWxsb3dFdmFsKFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPikg
Y29uc3Q7CiAKICAgICBib29sIGFsbG93U2NyaXB0RnJvbVNvdXJjZShjb25zdCBLVVJMJikgY29u
c3Q7CiAgICAgYm9vbCBhbGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDM3ZDA1NzBlZmI3NGQ3ZjFmYTQzZTcwNjdkYTNiOWJhNDdjYTYwODYuLjdmMTlkYjYw
OGQ2MzlhNjY3YTAxMDA5ZDFkMjVjMzYyZDY0ZWIzMDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0wNS0yMSAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEJs
b2NraW5nIGBzZXRUaW1lb3V0YCBhbmQgYHNldEludGVydmFsYCBldmFsdWF0aW9uIHdpdGggQ1NQ
IHNob3VsZCBpbmNsdWRlIGEgc3RhY2sgdHJhY2UgaW4gdGhlIGNvbnNvbGUgd2FybmluZy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2OTQzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci1lbmFibGVkL2NvbnRlbnRTZWN1cml0eVBvbGljeS1ibG9ja3Mtc2V0SW50ZXJ2
YWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci1l
bmFibGVkL2NvbnRlbnRTZWN1cml0eVBvbGljeS1ibG9ja3Mtc2V0SW50ZXJ2YWwuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9jb250ZW50U2VjdXJp
dHlQb2xpY3ktYmxvY2tzLXNldFRpbWVvdXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnRlbnRTZWN1cml0eVBvbGljeS1ibG9j
a3Mtc2V0VGltZW91dC5odG1sOiBBZGRlZC4KKwogMjAxMi0wNS0xNyAgRGFuIEJlcm5zdGVpbiAg
PG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTQxOTkzMz4gUHJv
YmxlbXMgd2l0aCBmbGlwcGVkIHdyaXRpbmcgbW9kZXMgYW5kIGNvbXBvc2l0aW5nCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnRlbnRTZWN1
cml0eVBvbGljeS1ibG9ja3Mtc2V0SW50ZXJ2YWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9jb250ZW50U2VjdXJpdHlQb2xpY3ktYmxvY2tz
LXNldEludGVydmFsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTY4YTRmMzhiNzdmMTFhYjlk
YjQ2ODUyOWMwZTA3MWI5Y2I3MWRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9jb250ZW50U2VjdXJpdHlQb2xpY3ktYmxvY2tzLXNl
dEludGVydmFsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0NPTlNPTEUgTUVTU0FHRTog
UmVmdXNlZCB0byBldmFsdWF0ZSBzY3JpcHQgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93
aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogInNjcmlwdC1zcmMgJ3NlbGYn
ICd1bnNhZmUtaW5saW5lJyIuCisKK1Rlc3RzIHRoYXQgYSBDU1AtYmxvY2tlZCBgc2V0SW50ZXJ2
YWxgIGNhbGwgZ2VuZXJhdGVzIGEgY29uc29sZSBtZXNzYWdlIHdpdGggYSBzdGFjayB0cmFjZSAo
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2OTQzKS4gVGhpcyBzaG91
bGQgYmUgZm9sbG93ZWQgYnkgYSByZWplY3Rpb24gbm90aWNlIHRpZWQgdG8gbGluZSAxOC4KKwor
UEFTUzogUmV0dXJuIHZhbHVlIGZvciBibG9ja2VkIHNldEludGVydmFsIGlzIDAKK1JlZnVzZWQg
dG8gZXZhbHVhdGUgc2NyaXB0IGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250
ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICJzY3JpcHQtc3JjICdzZWxmJyAndW5zYWZl
LWlubGluZSciLgorIGNvbnRlbnRTZWN1cml0eVBvbGljeS1ibG9ja3Mtc2V0SW50ZXJ2YWwuaHRt
bDoxOAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFi
bGVkL2NvbnRlbnRTZWN1cml0eVBvbGljeS1ibG9ja3Mtc2V0SW50ZXJ2YWwuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29udGVudFNlY3VyaXR5UG9saWN5
LWJsb2Nrcy1zZXRJbnRlcnZhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MTMyMTc0Nzc0N2M3YWU2OTcy
MDIxNjZhZGY3M2JiYWRkNTFjY2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnRlbnRTZWN1cml0eVBvbGljeS1ibG9ja3Mtc2V0
SW50ZXJ2YWwuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJYLVdlYktpdC1DU1AiIGNvbnRlbnQ9InNjcmlwdC1z
cmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJyI+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yL2Nv
bnNvbGUtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2codGV4dCkgewor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4
dCkpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnYnInKSk7Cit9CitmdW5jdGlvbiBvbmxvYWQoKSB7CisgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKKyAgfQor
CisgIHZhciBpZCA9IHNldEludGVydmFsKCJsb2coJ0ZBSUwnKSIsIDApOworICBpZiAoaWQgIT0g
MCkKKyAgICAgIGxvZygnRkFJTDogUmV0dXJuIHZhbHVlIGZvciBzdHJpbmcgKHNob3VsZCBiZSAw
KTogJyArIGlkKTsKKyAgZWxzZQorICAgICAgbG9nKCdQQVNTOiBSZXR1cm4gdmFsdWUgZm9yIGJs
b2NrZWQgc2V0SW50ZXJ2YWwgaXMgMCcpOworCisgIHJ1blRlc3QoKTsKK30KKworZnVuY3Rpb24g
dGVzdCgpIHsKKyAgICBJbnNwZWN0b3JUZXN0LmR1bXBDb25zb2xlTWVzc2FnZXMoKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9Im9ubG9hZCgpOyI+CisgICAgPHA+CisgICAgICAgIFRlc3RzIHRoYXQgYSBDU1At
YmxvY2tlZCBgc2V0SW50ZXJ2YWxgIGNhbGwgZ2VuZXJhdGVzIGEgY29uc29sZSBtZXNzYWdlCisg
ICAgICAgIHdpdGggYSBzdGFjayB0cmFjZSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg2OTQzKS4gVGhpcworICAgICAgICBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBy
ZWplY3Rpb24gbm90aWNlIHRpZWQgdG8gbGluZSAxOC4KKyAgICA8L3A+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVk
L2NvbnRlbnRTZWN1cml0eVBvbGljeS1ibG9ja3Mtc2V0VGltZW91dC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnRlbnRTZWN1cml0eVBv
bGljeS1ibG9ja3Mtc2V0VGltZW91dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ4NmQ5MmQw
N2RlMTZiOGY4YjZjYTMwY2MxMjAwOWUzNWRkOTZkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29udGVudFNlY3VyaXR5UG9saWN5
LWJsb2Nrcy1zZXRUaW1lb3V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0NPTlNPTEUg
TUVTU0FHRTogUmVmdXNlZCB0byBldmFsdWF0ZSBzY3JpcHQgYmVjYXVzZSBpdCB2aW9sYXRlcyB0
aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogInNjcmlwdC1z
cmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJyIuCisKK1Rlc3RzIHRoYXQgYSBDU1AtYmxvY2tlZCBg
c2V0VGltZW91dGAgY2FsbCBnZW5lcmF0ZXMgYSBjb25zb2xlIG1lc3NhZ2Ugd2l0aCBhIHN0YWNr
IHRyYWNlIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY5NDMpLiBU
aGlzIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhIHJlamVjdGlvbiBub3RpY2UgdGllZCB0byBsaW5l
IDE4LgorCitQQVNTOiBSZXR1cm4gdmFsdWUgZm9yIGJsb2NrZWQgc2V0VGltZW91dCBpcyAwCitS
ZWZ1c2VkIHRvIGV2YWx1YXRlIHNjcmlwdCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dp
bmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicg
J3Vuc2FmZS1pbmxpbmUnIi4KKyBjb250ZW50U2VjdXJpdHlQb2xpY3ktYmxvY2tzLXNldFRpbWVv
dXQuaHRtbDoxOAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci1lbmFibGVkL2NvbnRlbnRTZWN1cml0eVBvbGljeS1ibG9ja3Mtc2V0VGltZW91dC5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9jb250ZW50U2VjdXJpdHlQ
b2xpY3ktYmxvY2tzLXNldFRpbWVvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTZjZmY3NDExZDM5M2Rk
YzAwYzgwYTA0NWZmYjg5MmM1N2U0ODIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9jb250ZW50U2VjdXJpdHlQb2xpY3ktYmxvY2tz
LXNldFRpbWVvdXQuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJYLVdlYktpdC1DU1AiIGNvbnRlbnQ9InNjcmlw
dC1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJyI+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9y
L2NvbnNvbGUtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2codGV4dCkg
eworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
dGV4dCkpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnYnInKSk7Cit9CitmdW5jdGlvbiBvbmxvYWQoKSB7CisgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKKyAg
fQorCisgIHZhciBpZCA9IHNldFRpbWVvdXQoImxvZygnRkFJTCcpIiwgMCk7CisgIGlmIChpZCAh
PSAwKQorICAgICAgbG9nKCdGQUlMOiBSZXR1cm4gdmFsdWUgZm9yIHN0cmluZyAoc2hvdWxkIGJl
IDApOiAnICsgaWQpOworICBlbHNlCisgICAgICBsb2coJ1BBU1M6IFJldHVybiB2YWx1ZSBmb3Ig
YmxvY2tlZCBzZXRUaW1lb3V0IGlzIDAnKTsKKworICBydW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9u
IHRlc3QoKSB7CisgICAgSW5zcGVjdG9yVGVzdC5kdW1wQ29uc29sZU1lc3NhZ2VzKCk7CisgICAg
SW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJvbmxvYWQoKTsiPgorICAgIDxwPgorICAgICAgICBUZXN0cyB0aGF0IGEgQ1NQ
LWJsb2NrZWQgYHNldFRpbWVvdXRgIGNhbGwgZ2VuZXJhdGVzIGEgY29uc29sZSBtZXNzYWdlCisg
ICAgICAgIHdpdGggYSBzdGFjayB0cmFjZSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg2OTQzKS4gVGhpcworICAgICAgICBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBy
ZWplY3Rpb24gbm90aWNlIHRpZWQgdG8gbGluZSAxOC4KKyAgICA8L3A+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143070</attachid>
            <date>2012-05-21 11:52:06 -0700</date>
            <delta_ts>2012-05-21 16:00:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86943-20120521205205.patch</filename>
            <type>text/plain</type>
            <size>18964</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk0ZjFlNTFmMzQ4ZDA0
Mjg4MWZhNGE3MTVlMjA5M2JjNjY2ZDRmMC4uYTRlNDkzYzkyOWUzOWUxODc4NGU4Mjc5ZGY2ZDZh
MzdlMzNiNDQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA1LTIxICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wcm92aW5nIGNvbnNvbGUg
ZXJyb3IgZm9yIENTUC1ibG9ja2VkICBgc2V0VGltZW91dGAgYW5kIGBzZXRJbnRlcnZhbGAgZXZh
bHVhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg2OTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SWYgdGhlIGluc3BlY3RvciBpcyBvcGVuLCBhIHN0YWNrIHRyYWNlIGlzIGdlbmVyYXRlZCBiZWZv
cmUgY2FsbGluZworICAgICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93RXZhbCwgYW5k
IHBhc3NlZCB0aHJvdWdoIHRvCisgICAgICAgIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0
VmlvbGF0aW9uIGZvciB1c2UgaW4gdGhlIGNvbnNvbGUgbWVzc2FnZS4KKworICAgICAgICBUZXN0
OiBodHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnRlbnRTZWN1cml0eVBvbGljeS1ibG9j
a3Mtc2V0SW50ZXJ2YWwuaHRtbAorICAgICAgICAgICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci1l
bmFibGVkL2NvbnRlbnRTZWN1cml0eVBvbGljeS1ibG9ja3Mtc2V0VGltZW91dC5odG1sCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dTZXRUaW1l
b3V0SW1wbCk6CisgICAgICAgICogcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAg
ICAgICAoQ1NQRGlyZWN0aXZlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1BEaXJlY3RpdmVM
aXN0OjpyZXBvcnRWaW9sYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlz
dDo6Y2hlY2tFdmFsQW5kUmVwb3J0VmlvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERp
cmVjdGl2ZUxpc3Q6OmFsbG93RXZhbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzQWxsb3dlZEJ5QWxsV2l0aENhbGxTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpp
c0FsbG93ZWRCeUFsbFdpdGhVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5OjphbGxvd0V2YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxvd09iamVjdEZyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbWFnZUZyb21Tb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1N0eWxlRnJv
bVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
Rm9udEZyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
OjphbGxvd01lZGlhRnJvbVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmFsbG93Q29ubmVjdFRvU291cmNlKToKKyAgICAgICAgKiBwYWdlL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5oOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDUtMTcgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEtV
Ukw6OmZpbGVTeXN0ZW1QYXRoKCkgc2hvdWxkIHN0cmlwIHRoZSBxdWVyeSBvZiB0aGUgdXJpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCBh
MTNjM2E2NWZmMWJmMDg2NWFmODhmNmQyYzRkOTc3MWViMjcwZmUwLi4xOTA2OTA1ZjBhNzU1Mzdh
ZDFkNzkzODg4YmM1MzljMjYyNzYwMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgorI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNjcmlwdFNv
dXJjZUNvZGUuaCIKQEAgLTUzLDcgKzU1LDggQEAgUGFzc093blB0cjxTY2hlZHVsZWRBY3Rpb24+
IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRE9NV3JhcHBlclcKICAg
ICBKU1ZhbHVlIHYgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
ICAgICBpZiAoZ2V0Q2FsbERhdGEodiwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkgewotICAg
ICAgICBpZiAocG9saWN5ICYmICFwb2xpY3ktPmFsbG93RXZhbCgpKQorICAgICAgICBSZWZQdHI8
U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9ySW5zcGVj
dG9yKGV4ZWMpKTsKKyAgICAgICAgaWYgKHBvbGljeSAmJiAhcG9saWN5LT5hbGxvd0V2YWwoY2Fs
bFN0YWNrLnJlbGVhc2UoKSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
VVN0cmluZyBzdHJpbmcgPSB2LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMmFiY2YzY2E2MjE4
YjliZjJkMzU2NzlkODE4NmJjMDgwZjhiOTA5NC4uMzFiZDRjZDdiMDgwYTdhN2UxNDMwY2E0ZWQ0
YjhkN2M2OTkzYTU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBAIC00OCw2ICs0OCw4IEBACiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAiU2NoZWR1
bGVkQWN0aW9uLmgiCisjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCisjaW5jbHVkZSAiU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNp
bmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpA
QCAtMTI5LDcgKzEzMSw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXaW5kb3dTZXRUaW1lb3V0
SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHNpbmdsCiAKICAgICAgICAgaWQg
PSBET01UaW1lcjo6aW5zdGFsbChzY3JpcHRDb250ZXh0LCBhY3Rpb24ucmVsZWFzZSgpLCB0aW1l
b3V0LCBzaW5nbGVTaG90KTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoaW1wLT5kb2N1bWVu
dCgpICYmICFpbXAtPmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0V2
YWwoKSkKKyAgICAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNj
cmlwdENhbGxTdGFja0Zvckluc3BlY3RvcigpKTsKKyAgICAgICAgaWYgKGltcC0+ZG9jdW1lbnQo
KSAmJiAhaW1wLT5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dFdmFs
KGNhbGxTdGFjay5yZWxlYXNlKCkpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpO
ZXcoMCk7CiAgICAgICAgIGlkID0gRE9NVGltZXI6Omluc3RhbGwoc2NyaXB0Q29udGV4dCwgYWRv
cHRQdHIobmV3IFNjaGVkdWxlZEFjdGlvbihWOFByb3h5Ojpjb250ZXh0KGltcC0+ZnJhbWUoKSks
IGZ1bmN0aW9uU3RyaW5nKSksIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCAwZTdjOTVhN2Uy
OWRhYjQzZjQwOWU2YTZjYjEyMmU1ZmVhYTEzZDhlLi40NWY3NmIwMTlkZmY2N2YzOTMwMjQyNTgz
ODcyZjMyM2Y1MGE5OGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJp
dHlQb2xpY3kuY3BwCkBAIC00OTQsNyArNDk0LDcgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dJ
bmxpbmVFdmVudEhhbmRsZXJzKCkgY29uc3Q7CiAgICAgYm9vbCBhbGxvd0lubGluZVNjcmlwdCgp
IGNvbnN0OwogICAgIGJvb2wgYWxsb3dJbmxpbmVTdHlsZSgpIGNvbnN0OwotICAgIGJvb2wgYWxs
b3dFdmFsKCkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0V2YWwoUGFzc1JlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+KSBjb25zdDsKIAogICAgIGJvb2wgYWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IEtV
UkwmKSBjb25zdDsKICAgICBib29sIGFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25zdCBLVVJMJikg
Y29uc3Q7CkBAIC01MTgsMTIgKzUxOCwxMiBAQCBwcml2YXRlOgogICAgIFBhc3NPd25QdHI8Q1NQ
RGlyZWN0aXZlPiBjcmVhdGVDU1BEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKIAogICAgIENTUERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlKENT
UERpcmVjdGl2ZSopIGNvbnN0OwotICAgIHZvaWQgcmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgS1VS
TCYgYmxvY2tlZFVSTCA9IEtVUkwoKSkgY29uc3Q7CisgICAgdm9pZCByZXBvcnRWaW9sYXRpb24o
Y29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdl
LCBjb25zdCBLVVJMJiBibG9ja2VkVVJMID0gS1VSTCgpLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxT
dGFjaz4gPSAwKSBjb25zdDsKICAgICB2b2lkIGxvZ1VucmVjb2duaXplZERpcmVjdGl2ZShjb25z
dCBTdHJpbmcmIG5hbWUpIGNvbnN0OwogICAgIGJvb2wgY2hlY2tFdmFsKENTUERpcmVjdGl2ZSop
IGNvbnN0OwogCiAgICAgYm9vbCBjaGVja0lubGluZUFuZFJlcG9ydFZpb2xhdGlvbihDU1BEaXJl
Y3RpdmUqLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlKSBjb25zdDsKLSAgICBib29sIGNo
ZWNrRXZhbEFuZFJlcG9ydFZpb2xhdGlvbihDU1BEaXJlY3RpdmUqLCBjb25zdCBTdHJpbmcmIGNv
bnNvbGVNZXNzYWdlKSBjb25zdDsKKyAgICBib29sIGNoZWNrRXZhbEFuZFJlcG9ydFZpb2xhdGlv
bihDU1BEaXJlY3RpdmUqLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBQYXNzUmVmUHRy
PFNjcmlwdENhbGxTdGFjaz4pIGNvbnN0OwogICAgIGJvb2wgY2hlY2tTb3VyY2VBbmRSZXBvcnRW
aW9sYXRpb24oQ1NQRGlyZWN0aXZlKiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3Q7CiAKICAgICBib29sIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVwb3J0T25seTsgfQpAQCAtNTc1LDEwICs1NzUsMTAgQEAgUGFzc093blB0cjxDU1BEaXJl
Y3RpdmVMaXN0PiBDU1BEaXJlY3RpdmVMaXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2MKICAgICByZXR1cm4gcG9saWN5LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBDU1BEaXJlY3Rp
dmVMaXN0OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25z
dCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBLVVJMJiBibG9ja2VkVVJMKSBjb25zdAor
dm9pZCBDU1BEaXJlY3RpdmVMaXN0OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJl
Y3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBLVVJMJiBibG9j
a2VkVVJMLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKSBjb25zdAogewog
ICAgIFN0cmluZyBtZXNzYWdlID0gbV9yZXBvcnRPbmx5ID8gIltSZXBvcnQgT25seV0gIiArIGNv
bnNvbGVNZXNzYWdlIDogY29uc29sZU1lc3NhZ2U7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBF
cnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJv
ck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgU3RyaW5nKCksIDAsIGNhbGxTdGFjayk7CiAKICAgICBp
ZiAobV9yZXBvcnRVUklzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjQ2LDExICs2
NDYsMTEgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja0lubGluZUFuZFJlcG9ydFZpb2xh
dGlvbihDU1BEaXJlY3RpdmUqIGRpcmVjdGl2ZSwgY28KICAgICByZXR1cm4gZGVueUlmRW5mb3Jj
aW5nUG9saWN5KCk7CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tFdmFsQW5kUmVw
b3J0VmlvbGF0aW9uKENTUERpcmVjdGl2ZSogZGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNv
bGVNZXNzYWdlKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja0V2YWxBbmRSZXBv
cnRWaW9sYXRpb24oQ1NQRGlyZWN0aXZlKiBkaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29s
ZU1lc3NhZ2UsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spIGNvbnN0CiB7
CiAgICAgaWYgKGNoZWNrRXZhbChkaXJlY3RpdmUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICByZXBvcnRWaW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0KCksIGNvbnNvbGVNZXNzYWdlICsgIlwi
IiArIGRpcmVjdGl2ZS0+dGV4dCgpICsgIlwiLlxuIik7CisgICAgcmVwb3J0VmlvbGF0aW9uKGRp
cmVjdGl2ZS0+dGV4dCgpLCBjb25zb2xlTWVzc2FnZSArICJcIiIgKyBkaXJlY3RpdmUtPnRleHQo
KSArICJcIi5cbiIsIEtVUkwoKSwgY2FsbFN0YWNrKTsKICAgICByZXR1cm4gZGVueUlmRW5mb3Jj
aW5nUG9saWN5KCk7CiB9CiAKQEAgLTY4NywxMCArNjg3LDEwIEBAIGJvb2wgQ1NQRGlyZWN0aXZl
TGlzdDo6YWxsb3dJbmxpbmVTdHlsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNoZWNrSW5saW5lQW5k
UmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3N0eWxlU3JjLmdldCgpKSwgY29u
c29sZU1lc3NhZ2UpOwogfQogCi1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbCgpIGNv
bnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbChQYXNzUmVmUHRyPFNjcmlwdENh
bGxTdGFjaz4gY2FsbFN0YWNrKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBjb25zb2xlTWVzc2FnZSwgKCJSZWZ1c2VkIHRvIGV2YWx1YXRlIHNjcmlwdCBiZWNhdXNl
IGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0
aXZlOiAiKSk7Ci0gICAgcmV0dXJuIGNoZWNrRXZhbEFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRp
dmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSk7CisgICAgcmV0
dXJuIGNoZWNrRXZhbEFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3Jp
cHRTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSwgY2FsbFN0YWNrKTsKIH0KIAogYm9vbCBDU1BE
aXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25z
dApAQCAtOTMzLDggKzkzMywxOCBAQCBib29sIGlzQWxsb3dlZEJ5QWxsKGNvbnN0IENTUERpcmVj
dGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVzKQogICAgIHJldHVybiB0cnVlOwogfQogCit0ZW1wbGF0
ZTxib29sIChDU1BEaXJlY3RpdmVMaXN0OjoqYWxsb3dlZCkoUGFzc1JlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+KSBjb25zdD4KK2Jvb2wgaXNBbGxvd2VkQnlBbGxXaXRoQ2FsbFN0YWNrKGNvbnN0IENT
UERpcmVjdGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVzLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9saWNpZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCEocG9saWNpZXNbaV0uZ2V0KCktPiphbGxvd2VkKShj
YWxsU3RhY2spKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogdGVtcGxhdGU8Ym9vbCAoQ1NQRGlyZWN0aXZlTGlzdDo6KmFsbG93RnJvbVVS
TCkoY29uc3QgS1VSTCYpIGNvbnN0PgotYm9vbCBpc0FsbG93ZWRCeUFsbChjb25zdCBDU1BEaXJl
Y3RpdmVMaXN0VmVjdG9yJiBwb2xpY2llcywgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBpc0FsbG93
ZWRCeUFsbFdpdGhVUkwoY29uc3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNpZXMsIGNv
bnN0IEtVUkwmIHVybCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBvbGljaWVzLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIGlmICghKHBvbGljaWVzW2ldLmdldCgpLT4qYWxsb3dGcm9t
VVJMKSh1cmwpKQpAQCAtOTY1LDQ5ICs5NzUsNDkgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmFsbG93SW5saW5lU3R5bGUoKSBjb25zdAogICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbDwm
Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTdHlsZT4obV9wb2xpY2llcyk7CiB9CiAKLWJv
b2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0V2YWwoKSBjb25zdAorYm9vbCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OmFsbG93RXZhbChQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2Fs
bFN0YWNrKSBjb25zdAogewotICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbDwmQ1NQRGlyZWN0aXZl
TGlzdDo6YWxsb3dFdmFsPihtX3BvbGljaWVzKTsKKyAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGxX
aXRoQ2FsbFN0YWNrPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0V2YWw+KG1fcG9saWNpZXMsIGNh
bGxTdGFjayk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1NjcmlwdEZy
b21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogewotICAgIHJldHVybiBpc0FsbG93ZWRC
eUFsbDwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHRGcm9tU291cmNlPihtX3BvbGljaWVz
LCB1cmwpOworICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8JkNTUERpcmVjdGl2ZUxp
c3Q6OmFsbG93U2NyaXB0RnJvbVNvdXJjZT4obV9wb2xpY2llcywgdXJsKTsKIH0KIAogYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1
cmwpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsPCZDU1BEaXJlY3RpdmVMaXN0
OjphbGxvd09iamVjdEZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCk7CisgICAgcmV0dXJuIGlz
QWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dPYmplY3RGcm9tU291
cmNlPihtX3BvbGljaWVzLCB1cmwpOwogfQogCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGlzQWxsb3dlZEJ5QWxsPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkRnJhbWVG
cm9tU291cmNlPihtX3BvbGljaWVzLCB1cmwpOworICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdp
dGhVUkw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2U+KG1fcG9s
aWNpZXMsIHVybCk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ltYWdl
RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzQWxsb3dl
ZEJ5QWxsPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0ltYWdlRnJvbVNvdXJjZT4obV9wb2xpY2ll
cywgdXJsKTsKKyAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BEaXJlY3RpdmVM
aXN0OjphbGxvd0ltYWdlRnJvbVNvdXJjZT4obV9wb2xpY2llcywgdXJsKTsKIH0KIAogYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U3R5bGVGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVy
bCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGw8JkNTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93U3R5bGVGcm9tU291cmNlPihtX3BvbGljaWVzLCB1cmwpOworICAgIHJldHVybiBpc0Fs
bG93ZWRCeUFsbFdpdGhVUkw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93U3R5bGVGcm9tU291cmNl
PihtX3BvbGljaWVzLCB1cmwpOwogfQogCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxs
b3dGb250RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlz
QWxsb3dlZEJ5QWxsPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0ZvbnRGcm9tU291cmNlPihtX3Bv
bGljaWVzLCB1cmwpOworICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8JkNTUERpcmVj
dGl2ZUxpc3Q6OmFsbG93Rm9udEZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCk7CiB9CiAKIGJv
b2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBLVVJM
JiB1cmwpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsPCZDU1BEaXJlY3RpdmVM
aXN0OjphbGxvd01lZGlhRnJvbVNvdXJjZT4obV9wb2xpY2llcywgdXJsKTsKKyAgICByZXR1cm4g
aXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd01lZGlhRnJvbVNv
dXJjZT4obV9wb2xpY2llcywgdXJsKTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93Q29ubmVjdFRvU291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKIHsKLSAgICByZXR1
cm4gaXNBbGxvd2VkQnlBbGw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Q29ubmVjdFRvU291cmNl
PihtX3BvbGljaWVzLCB1cmwpOworICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8JkNT
UERpcmVjdGl2ZUxpc3Q6OmFsbG93Q29ubmVjdFRvU291cmNlPihtX3BvbGljaWVzLCB1cmwpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRl
eCBmMTMwMTRmMTMxZjU3MGJmYmI2MDU5YTUyODZhY2RkODAxODRiNWNjLi4xOWM0NjVlM2IwMGVj
YTJjMzk3ODA1NjhmNjVjODU3MmIxZDc3M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ1NQRGlyZWN0aXZlTGlzdDsKK2NsYXNzIFNjcmlwdENhbGxTdGFjazsKIGNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBLVVJMOwogCkBAIC02NSw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93SW5saW5lRXZlbnRIYW5kbGVycygpIGNvbnN0Owog
ICAgIGJvb2wgYWxsb3dJbmxpbmVTY3JpcHQoKSBjb25zdDsKICAgICBib29sIGFsbG93SW5saW5l
U3R5bGUoKSBjb25zdDsKLSAgICBib29sIGFsbG93RXZhbCgpIGNvbnN0OworICAgIGJvb2wgYWxs
b3dFdmFsKFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPikgY29uc3Q7CiAKICAgICBib29sIGFs
bG93U2NyaXB0RnJvbVNvdXJjZShjb25zdCBLVVJMJikgY29uc3Q7CiAgICAgYm9vbCBhbGxvd09i
amVjdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM3ZDA1NzBlZmI3NGQ3
ZjFmYTQzZTcwNjdkYTNiOWJhNDdjYTYwODYuLjdmMTlkYjYwOGQ2MzlhNjY3YTAxMDA5ZDFkMjVj
MzYyZDY0ZWIzMDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNS0yMSAgTWlrZSBXZXN0
ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEJsb2NraW5nIGBzZXRUaW1lb3V0YCBh
bmQgYHNldEludGVydmFsYCBldmFsdWF0aW9uIHdpdGggQ1NQIHNob3VsZCBpbmNsdWRlIGEgc3Rh
Y2sgdHJhY2UgaW4gdGhlIGNvbnNvbGUgd2FybmluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2OTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2Nv
bnRlbnRTZWN1cml0eVBvbGljeS1ibG9ja3Mtc2V0SW50ZXJ2YWwtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnRlbnRTZWN1cml0
eVBvbGljeS1ibG9ja3Mtc2V0SW50ZXJ2YWwuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9jb250ZW50U2VjdXJpdHlQb2xpY3ktYmxvY2tzLXNldFRp
bWVvdXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci1lbmFibGVkL2NvbnRlbnRTZWN1cml0eVBvbGljeS1ibG9ja3Mtc2V0VGltZW91dC5odG1sOiBB
ZGRlZC4KKwogMjAxMi0wNS0xNyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTQxOTkzMz4gUHJvYmxlbXMgd2l0aCBmbGlwcGVkIHdy
aXRpbmcgbW9kZXMgYW5kIGNvbXBvc2l0aW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnRlbnRTZWN1cml0eVBvbGljeS1ibG9ja3Mtc2V0
SW50ZXJ2YWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3It
ZW5hYmxlZC9jb250ZW50U2VjdXJpdHlQb2xpY3ktYmxvY2tzLXNldEludGVydmFsLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZTY4YTRmMzhiNzdmMTFhYjlkYjQ2ODUyOWMwZTA3MWI5Y2I3MWRi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5h
YmxlZC9jb250ZW50U2VjdXJpdHlQb2xpY3ktYmxvY2tzLXNldEludGVydmFsLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDggQEAKK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBldmFsdWF0ZSBz
Y3JpcHQgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkg
UG9saWN5IGRpcmVjdGl2ZTogInNjcmlwdC1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJyIuCisK
K1Rlc3RzIHRoYXQgYSBDU1AtYmxvY2tlZCBgc2V0SW50ZXJ2YWxgIGNhbGwgZ2VuZXJhdGVzIGEg
Y29uc29sZSBtZXNzYWdlIHdpdGggYSBzdGFjayB0cmFjZSAoaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg2OTQzKS4gVGhpcyBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBy
ZWplY3Rpb24gbm90aWNlIHRpZWQgdG8gbGluZSAxOC4KKworUEFTUzogUmV0dXJuIHZhbHVlIGZv
ciBibG9ja2VkIHNldEludGVydmFsIGlzIDAKK1JlZnVzZWQgdG8gZXZhbHVhdGUgc2NyaXB0IGJl
Y2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBk
aXJlY3RpdmU6ICJzY3JpcHQtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZSciLgorIGNvbnRlbnRT
ZWN1cml0eVBvbGljeS1ibG9ja3Mtc2V0SW50ZXJ2YWwuaHRtbDoxOAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnRlbnRTZWN1cml0eVBv
bGljeS1ibG9ja3Mtc2V0SW50ZXJ2YWwuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yLWVuYWJsZWQvY29udGVudFNlY3VyaXR5UG9saWN5LWJsb2Nrcy1zZXRJbnRlcnZhbC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQ3MTMyMTc0Nzc0N2M3YWU2OTcyMDIxNjZhZGY3M2JiYWRkNTFjY2YK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFi
bGVkL2NvbnRlbnRTZWN1cml0eVBvbGljeS1ibG9ja3Mtc2V0SW50ZXJ2YWwuaHRtbApAQCAtMCww
ICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJYLVdlYktpdC1DU1AiIGNvbnRlbnQ9InNjcmlwdC1zcmMgJ3NlbGYnICd1bnNhZmUtaW5s
aW5lJyI+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yL2NvbnNvbGUtdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2codGV4dCkgeworICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpOworICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSk7Cit9CitmdW5jdGlv
biBvbmxvYWQoKSB7CisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKKyAgfQorCisgIHZhciBpZCA9IHNldEludGVy
dmFsKCJsb2coJ0ZBSUwnKSIsIDApOworICBpZiAoaWQgIT0gMCkKKyAgICAgIGxvZygnRkFJTDog
UmV0dXJuIHZhbHVlIGZvciBzdHJpbmcgKHNob3VsZCBiZSAwKTogJyArIGlkKTsKKyAgZWxzZQor
ICAgICAgbG9nKCdQQVNTOiBSZXR1cm4gdmFsdWUgZm9yIGJsb2NrZWQgc2V0SW50ZXJ2YWwgaXMg
MCcpOworCisgIHJ1blRlc3QoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBJbnNwZWN0
b3JUZXN0LmR1bXBDb25zb2xlTWVzc2FnZXMoKTsKKyAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9Im9ubG9hZCgpOyI+
CisgICAgPHA+CisgICAgICAgIFRlc3RzIHRoYXQgYSBDU1AtYmxvY2tlZCBgc2V0SW50ZXJ2YWxg
IGNhbGwgZ2VuZXJhdGVzIGEgY29uc29sZSBtZXNzYWdlCisgICAgICAgIHdpdGggYSBzdGFjayB0
cmFjZSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2OTQzKS4gVGhp
cworICAgICAgICBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSByZWplY3Rpb24gbm90aWNlIHRpZWQg
dG8gbGluZSAxOC4KKyAgICA8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnRlbnRTZWN1cml0eVBvbGlj
eS1ibG9ja3Mtc2V0VGltZW91dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci1lbmFibGVkL2NvbnRlbnRTZWN1cml0eVBvbGljeS1ibG9ja3Mtc2V0VGltZW91
dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ4NmQ5MmQwN2RlMTZiOGY4YjZjYTMwY2MxMjAw
OWUzNWRkOTZkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yLWVuYWJsZWQvY29udGVudFNlY3VyaXR5UG9saWN5LWJsb2Nrcy1zZXRUaW1lb3V0LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBl
dmFsdWF0ZSBzY3JpcHQgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQg
U2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogInNjcmlwdC1zcmMgJ3NlbGYnICd1bnNhZmUtaW5s
aW5lJyIuCisKK1Rlc3RzIHRoYXQgYSBDU1AtYmxvY2tlZCBgc2V0VGltZW91dGAgY2FsbCBnZW5l
cmF0ZXMgYSBjb25zb2xlIG1lc3NhZ2Ugd2l0aCBhIHN0YWNrIHRyYWNlIChodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY5NDMpLiBUaGlzIHNob3VsZCBiZSBmb2xsb3dl
ZCBieSBhIHJlamVjdGlvbiBub3RpY2UgdGllZCB0byBsaW5lIDE4LgorCitQQVNTOiBSZXR1cm4g
dmFsdWUgZm9yIGJsb2NrZWQgc2V0VGltZW91dCBpcyAwCitSZWZ1c2VkIHRvIGV2YWx1YXRlIHNj
cmlwdCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQ
b2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAnc2VsZicgJ3Vuc2FmZS1pbmxpbmUnIi4KKyBj
b250ZW50U2VjdXJpdHlQb2xpY3ktYmxvY2tzLXNldFRpbWVvdXQuaHRtbDoxOAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnRlbnRTZWN1
cml0eVBvbGljeS1ibG9ja3Mtc2V0VGltZW91dC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3ItZW5hYmxlZC9jb250ZW50U2VjdXJpdHlQb2xpY3ktYmxvY2tzLXNldFRpbWVv
dXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMTZjZmY3NDExZDM5M2RkYzAwYzgwYTA0NWZmYjg5MmM1N2U0
ODIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3It
ZW5hYmxlZC9jb250ZW50U2VjdXJpdHlQb2xpY3ktYmxvY2tzLXNldFRpbWVvdXQuaHRtbApAQCAt
MCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRw
LWVxdWl2PSJYLVdlYktpdC1DU1AiIGNvbnRlbnQ9InNjcmlwdC1zcmMgJ3NlbGYnICd1bnNhZmUt
aW5saW5lJyI+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yL2NvbnNvbGUtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2codGV4dCkgeworICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpOworICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSk7Cit9CitmdW5j
dGlvbiBvbmxvYWQoKSB7CisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKKyAgfQorCisgIHZhciBpZCA9IHNldFRp
bWVvdXQoImxvZygnRkFJTCcpIiwgMCk7CisgIGlmIChpZCAhPSAwKQorICAgICAgbG9nKCdGQUlM
OiBSZXR1cm4gdmFsdWUgZm9yIHN0cmluZyAoc2hvdWxkIGJlIDApOiAnICsgaWQpOworICBlbHNl
CisgICAgICBsb2coJ1BBU1M6IFJldHVybiB2YWx1ZSBmb3IgYmxvY2tlZCBzZXRUaW1lb3V0IGlz
IDAnKTsKKworICBydW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgSW5zcGVj
dG9yVGVzdC5kdW1wQ29uc29sZU1lc3NhZ2VzKCk7CisgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0
ZVRlc3QoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJvbmxvYWQoKTsi
PgorICAgIDxwPgorICAgICAgICBUZXN0cyB0aGF0IGEgQ1NQLWJsb2NrZWQgYHNldFRpbWVvdXRg
IGNhbGwgZ2VuZXJhdGVzIGEgY29uc29sZSBtZXNzYWdlCisgICAgICAgIHdpdGggYSBzdGFjayB0
cmFjZSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2OTQzKS4gVGhp
cworICAgICAgICBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSByZWplY3Rpb24gbm90aWNlIHRpZWQg
dG8gbGluZSAxOC4KKyAgICA8L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>