<?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>45044</bug_id>
          
          <creation_ts>2010-09-01 10:01:07 -0700</creation_ts>
          <short_desc>Add the concept of class methods to bindings (for IndexedDB&apos;s IDBKeyRange).</short_desc>
          <delta_ts>2011-11-21 21:34:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>44599</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>ager</cc>
    
    <cc>andreip</cc>
    
    <cc>bulach</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>272864</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-01 10:01:07 -0700</bug_when>
    <thetext>Add the concept of &quot;static&quot; methods to bindings (for IndexedDB&apos;s IDBKeyRange).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272872</commentid>
    <comment_count>1</comment_count>
      <attachid>66228</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-01 10:18:35 -0700</bug_when>
    <thetext>Created attachment 66228
topic of discussion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272873</commentid>
    <comment_count>2</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-01 10:20:28 -0700</bug_when>
    <thetext>jorlow: japhet dglazkov ...got something to help wake you up  
[5:00pm] jorlow: I&apos;m trying to essentially implement &quot;static&quot; methods in javascript
[5:00pm] jorlow: cause jonas insists on it for IndexedDB
[5:01pm] jorlow: IDBKeyRange is the name of an interface...it has 4 methods on it that we want to be static (cause they&apos;re factories for making IDBKeyRanges)
[5:01pm] jorlow: i.e.  IDBKeyRange.rightBound(...)  should return an IDBKeyRange object
[5:01pm] • dglazkov pretends to be completely asleep.
[5:01pm] jorlow: i thought i figured out how to do this
[5:01pm] jorlow: and it even compiles
[5:01pm] jorlow: but it doesn&apos;t work
[5:03pm] jorlow: on line 1952 of CodeGeneratorV8.pm I added a check for a custom extAttr which I&apos;m calling V8Static
[5:03pm] jorlow: if it&apos;s there, it sets $template = &quot;desc&quot;;
[5:03pm] jorlow: which seems like it should then modify the functionTemplate
[5:03pm] jorlow: btw, in window, I obviously have an attribute IDBKeyRangeConstructor IDBKeyRange;
[5:04pm] jorlow: so I thought adding the items to the functionTemplate rather than the prototype would be enough
[5:04pm] jorlow: but it just doesn&apos;t work
[5:04pm] jorlow: and i&apos;ve hit the point where I can&apos;t think of anything else to tinker with
[5:05pm] jorlow: i&apos;ve looked at the generated code by hand and it seems sane
[5:05pm] jorlow: any ideas?


This is what I have.  I believe it should work...but it doesn&apos;t.  If you guys have any ideas, I would be extremely appreciative.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272900</commentid>
    <comment_count>3</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-01 11:01:51 -0700</bug_when>
    <thetext>If you want to test this patch, you should also patch in this one, btw: https://bugs.webkit.org/show_bug.cgi?id=44599</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272902</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-01 11:10:33 -0700</bug_when>
    <thetext>More background:

What&apos;s currently specced doesn&apos;t work: http://www.w3.org/TR/IndexedDB/#range-concept  Calling member methods is the only way to get an object.  The normal way to do it would be to put member methods on some other object that&apos;s already instantiated.  window.indexedDB returns an IDBFactory object, so that&apos;d be the obvious choice.  Jonas is pretty insistent on us making these &quot;static&quot; methods on IDBKeyRange.  The whole thread has the subject of &quot;[IndexedDB] Constants and interfaces&quot; on public-webapps, but here&apos;s the main part:

&quot;&quot;&quot;
&gt; We either need to figure out the right language to describe what we intended
&gt; or we need to change it.  As I mentioned, I tried to figure out what was
&gt; needed spec wise, but couldn&apos;t.  As far as I can tell, there isn&apos;t anything
&gt; else out there trying to do this either, so it&apos;s very possible this behavior
&gt; would require a change to the WebIDL spec.  (And blocking on that
&gt; is probably not a good idea given that it&apos;s been stagnant for so long and
&gt; has quite a backlog of required changes at this point.)
&gt; Can you (or anyone else) think of a way to spec it?

I think the way to do it is as follows:

* Remove the factory methods from the IDBKeyRange interface. The
factory methods shouldn&apos;t be showing up on individual instances
anyway.
* Add prose below the interface description that states that in
javascript, the interface object IDBKeyRange has the following
methods:
 IDBKeyRange only (in any value);
 IDBKeyRange leftBound (in any bound, in optional boolean open);
 IDBKeyRange rightBound (in any bound, in optional boolean open);
 IDBKeyRange bound (in any left, in any right, in optional boolean
openLeft, in optional boolean openRight);
 In other languages the same factory methods are exposed as static
methods in a way that is appropriate for that language. If the
language doesn&apos;t support static methods, the methods are exposed on
the IDBFactory interface.
* Make a special note that in javascript, the factory methods are
*not* exposed on the IDBFactory interface.
&quot;&quot;&quot;


To test this patch (along with the one I just posted) you should be able to do IDBKeyRange.leftBound().  Right now, IDBKeyRange.leftBound is undefined.  (And so is IDBKeyRange.__proto__.leftBound.)  The attributes seem to work fine though.  I.e. IDBKeyRange.SINGLE works.  And that also works on instantiated objects.

https://cs.corp.google.com/p#chrome/trunk/src/third_party/WebKit/WebCore/bindings/v8/V8Proxy.cpp&amp;q=batchConfigureConstants&amp;sa=N&amp;cd=1&amp;ct=rc is the code for binding constants and what made me think my solution would work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272905</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-01 11:18:29 -0700</bug_when>
    <thetext>Oh, don&apos;t remember to pass in --enable-indexed-database at runtime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272916</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-01 11:38:15 -0700</bug_when>
    <thetext>OK.  Apparently I had some bit of user error building the code.  I have no idea how I triggered it, but it was somehow building stale stuff.  It now works.  At least to the extent that |IDBKeyRange.leftBound| returns a function.  But when I call it like this |IDBKeyRange.leftBound(2)| I get a &quot;TypeError: Illegal invocation&quot; without it hitting a breakpoint I set in V8IDBKeyRange.cpp&apos;s leftBoundCallback method.  So I assume now I&apos;m hitting an issue where V8 assumes we always have an instance when we&apos;re calling a method.

I&apos;m going to work on this more tomorrow.  If you have suggestions, I&apos;d really appreciate hearing them tho!  (Especially from Mads.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273325</commentid>
    <comment_count>7</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-02 04:24:41 -0700</bug_when>
    <thetext>It looks like the problem was using the defaultSignature.  In the V8 code generator, the extended attribute &quot;V8DoNotCheckSignature&quot; uses &quot;v8::Local&lt;v8::Signature&gt;()&quot; instead of the default one (which seems to essentially be &quot;v8::Signature::New(&quot; . $className . &quot;::GetRawTemplate())&quot;).

Now I think all I need to do is change the generated code to assume it&apos;s static and not an instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273366</commentid>
    <comment_count>8</comment_count>
      <attachid>66363</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-02 06:24:56 -0700</bug_when>
    <thetext>Created attachment 66363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273367</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-02 06:27:58 -0700</bug_when>
    <thetext>Attachment 66363 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/bindings/scripts/test/V8/V8TestObj.cpp:1005:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 13 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>273443</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-02 10:41:48 -0700</bug_when>
    <thetext>The term “static” seems wrong for this. That terminology in C++ is quite quirky and specific to C syntax, and I suggest using a more traditional term, such as class method or something along those lines, in IDL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273450</commentid>
    <comment_count>11</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-02 10:54:56 -0700</bug_when>
    <thetext>I&apos;ll replace &quot;Static&quot; with &quot;ClassMethod&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273456</commentid>
    <comment_count>12</comment_count>
      <attachid>66387</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-02 11:06:49 -0700</bug_when>
    <thetext>Created attachment 66387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273457</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-02 11:11:45 -0700</bug_when>
    <thetext>Attachment 66387 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/bindings/scripts/test/V8/V8TestObj.cpp:1005:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 12 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>273893</commentid>
    <comment_count>14</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-03 05:39:54 -0700</bug_when>
    <thetext>Nate can you please review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273960</commentid>
    <comment_count>15</comment_count>
      <attachid>66387</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-09-03 08:56:49 -0700</bug_when>
    <thetext>Comment on attachment 66387
Patch

Ok

&gt; +        // Class methods within JavaScript (like what&apos;s used for IDBKeyRange).
&gt; +        [V8ClassMethod] void classMethod();
&gt; +        [V8ClassMethod] long classMethodWithOptional(in [Optional] long arg);

Is there a good reason for the attribute name to have V8 in it? I know it&apos;s V8-only at the moment, but if it&apos;s going to be used across all bindings eventually, we might want to just drop the &apos;V8&apos; now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273964</commentid>
    <comment_count>16</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-03 08:58:06 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 66387 [details])
&gt; Ok
&gt; 
&gt; &gt; +        // Class methods within JavaScript (like what&apos;s used for IDBKeyRange).
&gt; &gt; +        [V8ClassMethod] void classMethod();
&gt; &gt; +        [V8ClassMethod] long classMethodWithOptional(in [Optional] long arg);
&gt; 
&gt; Is there a good reason for the attribute name to have V8 in it? I know it&apos;s V8-only at the moment, but if it&apos;s going to be used across all bindings eventually, we might want to just drop the &apos;V8&apos; now.

Makes sense.  Will do when landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274433</commentid>
    <comment_count>17</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-05 08:10:16 -0700</bug_when>
    <thetext>landed</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66228</attachid>
            <date>2010-09-01 10:18:35 -0700</date>
            <delta_ts>2010-09-02 06:24:50 -0700</delta_ts>
            <desc>topic of discussion</desc>
            <filename>a</filename>
            <type>text/plain</type>
            <size>11025</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0g
Yi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDU2ODM4
Y2EuLjhmNmYzMGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbQpAQCAtMTc2MSw2ICsxNzYxLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgaWYgKCRhdHRyRXh0LT57IlY4T25JbnN0YW5jZSJ9KSB7CiAgICAgICAgICAgICBuZXh0
OwogICAgICAgICB9CisgICAgICAgIGlmICgkYXR0ckV4dC0+eyJWOFN0YXRpYyJ9KSB7CisgICAg
ICAgICAgICBuZXh0OworICAgICAgICB9CiAgICAgICAgIGlmICgkYXR0ckV4dC0+eyJFbmFibGVk
QXRSdW50aW1lIn0gfHwgUmVxdWlyZXNDdXN0b21TaWduYXR1cmUoJGZ1bmN0aW9uKSB8fCAkYXR0
ckV4dC0+eyJWOERvTm90Q2hlY2tTaWduYXR1cmUifSkgewogICAgICAgICAgICAgbmV4dDsKICAg
ICAgICAgfQpAQCAtMTk0Niw2ICsxOTQ5LDkgQEAgRU5ECiAgICAgICAgIGlmICgkYXR0ckV4dC0+
eyJWOE9uSW5zdGFuY2UifSkgewogICAgICAgICAgICAgJHRlbXBsYXRlID0gImluc3RhbmNlIjsK
ICAgICAgICAgfQorICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhTdGF0aWMifSkgeworICAgICAg
ICAgICAgJHRlbXBsYXRlID0gImRlc2MiOworICAgICAgICB9CiAKICAgICAgICAgbXkgJGNvbmRp
dGlvbmFsID0gIiI7CiAgICAgICAgIGlmICgkYXR0ckV4dC0+eyJFbmFibGVkQXRSdW50aW1lIn0p
IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01U
ZXN0T2JqLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
T2JqLmNwcAppbmRleCA4ODJlNjMzLi5hMmJhZjE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCkBAIC03NDksNiArNzQ5LDE0
IEBAIHZvaWQgV2ViRE9NVGVzdE9iajo6bWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0
aW9uYWxBcmdzKGludCBub25PcHQsIGludCBvCiAgICAgaW1wbCgpLT5tZXRob2RXaXRoTm9uT3B0
aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3Mobm9uT3B0LCBvcHQxLCBvcHQyKTsKIH0KIAordm9p
ZCBXZWJET01UZXN0T2JqOjpzdGF0aWNNZXRob2QoKQoreworICAgIGlmICghaW1wbCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpbXBsKCktPnN0YXRpY01ldGhvZCgpOworfQorCiBXZWJDb3Jl
OjpUZXN0T2JqKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVzdE9iaiYgd3JhcHBlcikKIHsKICAg
ICByZXR1cm4gd3JhcHBlci5pbXBsKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAppbmRleCA3NzBjZTUxLi45NmM5MTRlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCisr
KyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKQEAg
LTE1MCw2ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtZXRob2RXaXRoT3B0aW9uYWxBcmco
aW50IG9wdCk7CiAgICAgdm9pZCBtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFy
ZyhpbnQgbm9uT3B0LCBpbnQgb3B0KTsKICAgICB2b2lkIG1ldGhvZFdpdGhOb25PcHRpb25hbEFy
Z0FuZFR3b09wdGlvbmFsQXJncyhpbnQgbm9uT3B0LCBpbnQgb3B0MSwgaW50IG9wdDIpOworICAg
IHZvaWQgc3RhdGljTWV0aG9kKCk7CiAKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpbXBsKCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdE9iai5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCmluZGV4IDNjMjdiODEuLjM5MDI0MzcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9i
ai5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T2JqLmNwcApAQCAtMzY0LDYgKzM2NCwxNSBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX21l
dGhvZF93aXRoX25vbl9vcHRpb25hbF9hcmdfYW5kX3R3b19vcHRpb25hbF9hcmdzKFdlYktpdERP
TQogICAgIGl0ZW0tPm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhu
b25fb3B0LCBvcHQxLCBvcHQyKTsKIH0KIAordm9pZAord2Via2l0X2RvbV90ZXN0X29ial9zdGF0
aWNfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CisgICAg
V2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+
c3RhdGljTWV0aG9kKCk7Cit9CisKIGdsb25nCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWFk
X29ubHlfaW50X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oIGIv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgK
aW5kZXggNGNjNzk2ZC4uN2FkZWNkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKQEAgLTEyNCw2ICsxMjQs
OSBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX25vbl9vcHRpb25hbF9hcmdfYW5k
X29wdGlvbmFsX2FyZyhXZWJLaXRET01UZXN0TwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX21ldGhvZF93aXRoX25vbl9vcHRpb25hbF9hcmdfYW5kX3R3b19vcHRpb25hbF9h
cmdzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIG5vbl9vcHQsIGdsb25nIG9wdDEsIGds
b25nIG9wdDIpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc3RhdGlj
X21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKKwogV0VCS0lUX0FQSSBnbG9uZwogd2Vi
a2l0X2RvbV90ZXN0X29ial9nZXRfcmVhZF9vbmx5X2ludF9hdHRyKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAppbmRleCAyYTM5YWM0Li43NjU1OGViIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBib29sIEpTVGVz
dE9iakNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudAogI2RlZmluZSBUSFVOS19HRU5FUkFUT1IoZ2VuZXJhdG9yKQogI2VuZGlm
CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZh
bHVlc1s0NV0gPQorc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlw
ZVRhYmxlVmFsdWVzWzQ2XSA9CiB7CiAgICAgeyAiQ09OU1RfVkFMVUVfMCIsIERvbnREZWxldGUg
fCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPYmpDT05TVF9WQUxVRV8wKSwgKGludHB0cl90KTAgVEhVTktfR0VORVJBVE9S
KDApIH0sCiAgICAgeyAiQ09OU1RfVkFMVUVfMSIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpD
T05TVF9WQUxVRV8xKSwgKGludHB0cl90KTAgVEhVTktfR0VORVJBVE9SKDApIH0sCkBAIC0yMjMs
NiArMjIzLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlw
ZVRhYmxlVmFsdWVzWzQ1XSA9CiAgICAgeyAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2Fs
bGJhY2tBcmciLCBEb250RGVsZXRlIHwgRnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxO
YXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2Fs
bGJhY2tBcmdBbmRDYWxsYmFja0FyZyksIChpbnRwdHJfdCkyIFRIVU5LX0dFTkVSQVRPUigwKSB9
LAogICAgIHsgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIiwgRG9udERlbGV0ZSB8
IEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcpLCAoaW50
cHRyX3QpMSBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7ICJvdmVybG9hZGVkTWV0aG9kIiwg
RG9udERlbGV0ZSB8IEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZCksIChpbnRwdHJf
dCkyIFRIVU5LX0dFTkVSQVRPUigwKSB9LAorICAgIHsgInN0YXRpY01ldGhvZCIsIERvbnREZWxl
dGUgfCBGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblN0YXRpY01ldGhvZCksIChpbnRwdHJfdCkwIFRIVU5LX0dF
TkVSQVRPUigwKSB9LAogICAgIHsgMCwgMCwgMCwgMCBUSFVOS19HRU5FUkFUT1IoMCkgfQogfTsK
IApAQCAtMTQyOCw2ICsxNDI5LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKEV4ZWNTdGF0CiAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdGF0aWNNZXRob2QoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwor
ICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIFRl
c3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwor
CisgICAgaW1wLT5zdGF0aWNNZXRob2QoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworfQorCiAvLyBDb25zdGFudCBnZXR0ZXJzCiAKIEpTVmFsdWUganNUZXN0
T2JqQ09OU1RfVkFMVUVfMChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZp
ZXImKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmggYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAppbmRl
eCA5OTNkZjhjLi5jMTdjN2E0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouaApAQCAtMTE5LDYgKzExOSw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Fy
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhKU0M6OkV4ZWNTdGF0
ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoSlNDOjpFeGVjU3RhdGUq
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0YXRpY01ldGhv
ZChKU0M6OkV4ZWNTdGF0ZSopOwogLy8gQXR0cmlidXRlcwogCiBKU0M6OkpTVmFsdWUganNUZXN0
T2JqUmVhZE9ubHlJbnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBK
U0M6OklkZW50aWZpZXImKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdE9iai5oIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLmgKaW5kZXggNGEwZjA2NS4uZTlmODdiMSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKQEAgLTE0Miw2ICsxNDIsNyBA
QCBlbnVtIHsKIC0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsQXJnOihpbnQpb3B0OwogLSAodm9p
ZCltZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZzooaW50KW5vbk9wdCBvcHQ6
KGludClvcHQ7CiAtICh2b2lkKW1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFs
QXJnczooaW50KW5vbk9wdCBvcHQxOihpbnQpb3B0MSBvcHQyOihpbnQpb3B0MjsKKy0gKHZvaWQp
c3RhdGljTWV0aG9kOwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQppbmRleCAwMWZjZjM0Li5hZGRmYTlhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0K
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCkBA
IC02MzQsNiArNjM0LDEyIEBACiAgICAgSU1QTC0+bWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5k
VHdvT3B0aW9uYWxBcmdzKG5vbk9wdCwgb3B0MSwgb3B0Mik7CiB9CiAKKy0gKHZvaWQpc3RhdGlj
TWV0aG9kCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IElNUEwtPnN0YXRpY01ldGhvZCgpOworfQorCiBAZW5kCiAKIFdlYkNvcmU6OlRlc3RPYmoqIGNv
cmUoRE9NVGVzdE9iaiAqd3JhcHBlcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGwKaW5kZXggOTRmNzM0Yi4uMTNkNDBiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTEzNyw2ICsxMzcsOSBAQCBtb2R1bGUgdGVzdCB7CiAg
ICAgICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChpbiBsb25nIGludEFyZyk7CiAjZW5kaWYK
IAorICAgICAgICAvLyAiU3RhdGljIiBtZXRob2RzIHdpdGhpbiBKYXZhU2NyaXB0IChsaWtlIHdo
YXQncyB1c2VkIGZvciBJREJLZXlSYW5nZSkuCisgICAgICAgIFtWOFN0YXRpY10gdm9pZCBzdGF0
aWNNZXRob2QoKTsKKwogICAgICAgICAvLyBPYmplY3RpdmVDIHJlc2VydmVkIHdvcmRzLgogICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAgICAgIGRlc2NyaXB0aW9uOwogICAgICAgICBh
dHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICAgIGlkOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggNzQyOGM5My4uZTgyNWQyYiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC05OTAs
NiArOTkwLDE0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhv
ZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIG5vdEhhbmRs
ZWRCeUludGVyY2VwdG9yKCk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3Rh
dGljTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0T2JqLnN0YXRpY01ldGhvZCIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgaW1wLT5zdGF0aWNNZXRob2Qo
KTsKKyAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFRlc3RPYmpJbnRlcm5hbAogCiBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0
T2JqQXR0cnNbXSA9IHsKQEAgLTExNjMsNiArMTE3MSw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBl
cnNpCiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY3VzdG9tQXJnc0FuZEV4
Y2VwdGlvbkFyZ3ZbY3VzdG9tQXJnc0FuZEV4Y2VwdGlvbkFyZ2NdID0geyBWOGxvZzo6R2V0UmF3
VGVtcGxhdGUoKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY3VzdG9tQXJnc0Fu
ZEV4Y2VwdGlvblNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBjdXN0b21Bcmdz
QW5kRXhjZXB0aW9uQXJnYywgY3VzdG9tQXJnc0FuZEV4Y2VwdGlvbkFyZ3YpOwogICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3KCJjdXN0b21BcmdzQW5kRXhjZXB0aW9uIiksIHY4OjpGdW5j
dGlvblRlbXBsYXRlOjpOZXcoVGVzdE9iakludGVybmFsOjpjdXN0b21BcmdzQW5kRXhjZXB0aW9u
Q2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCBjdXN0b21BcmdzQW5kRXhjZXB0aW9u
U2lnbmF0dXJlKSk7CisgICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ldygic3RhdGljTWV0aG9k
IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9iakludGVybmFsOjpzdGF0aWNNZXRo
b2RDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIGRlZmF1bHRTaWduYXR1cmUpKTsK
ICAgICBiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywgVGVzdE9iakNvbnN0cywg
c2l6ZW9mKFRlc3RPYmpDb25zdHMpIC8gc2l6ZW9mKCpUZXN0T2JqQ29uc3RzKSk7CiAKICAgICAv
LyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9J
REJLZXlSYW5nZS5pZGwgYi9XZWJDb3JlL3N0b3JhZ2UvSURCS2V5UmFuZ2UuaWRsCmluZGV4IDZk
YWFlYzEuLmNmZWJlNmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJLZXlSYW5nZS5p
ZGwKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQktleVJhbmdlLmlkbApAQCAtMzksMTAgKzM5LDEw
IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQktleSBy
aWdodDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IGZsYWdzOwog
Ci0gICAgICAgIElEQktleVJhbmdlIG9ubHkoaW4gSURCS2V5IHZhbHVlKTsKLSAgICAgICAgSURC
S2V5UmFuZ2UgbGVmdEJvdW5kKGluIElEQktleSBib3VuZCwgaW4gW09wdGlvbmFsXSBib29sZWFu
IG9wZW4pOwotICAgICAgICBJREJLZXlSYW5nZSByaWdodEJvdW5kKGluIElEQktleSBib3VuZCwg
aW4gW09wdGlvbmFsXSBib29sZWFuIG9wZW4pOwotICAgICAgICBJREJLZXlSYW5nZSBib3VuZChp
biBJREJLZXkgbGVmdCwgaW4gSURCS2V5IHJpZ2h0LCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gb3Bl
bkxlZnQsIGluIFtPcHRpb25hbF0gYm9vbGVhbiBvcGVuUmlnaHQpOworICAgICAgICBbVjhTdGF0
aWNdIElEQktleVJhbmdlIG9ubHkoaW4gSURCS2V5IHZhbHVlKTsKKyAgICAgICAgW1Y4U3RhdGlj
XSBJREJLZXlSYW5nZSBsZWZ0Qm91bmQoaW4gSURCS2V5IGJvdW5kLCBpbiBbT3B0aW9uYWxdIGJv
b2xlYW4gb3Blbik7CisgICAgICAgIFtWOFN0YXRpY10gSURCS2V5UmFuZ2UgcmlnaHRCb3VuZChp
biBJREJLZXkgYm91bmQsIGluIFtPcHRpb25hbF0gYm9vbGVhbiBvcGVuKTsKKyAgICAgICAgW1Y4
U3RhdGljXSBJREJLZXlSYW5nZSBib3VuZChpbiBJREJLZXkgbGVmdCwgaW4gSURCS2V5IHJpZ2h0
LCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gb3BlbkxlZnQsIGluIFtPcHRpb25hbF0gYm9vbGVhbiBv
cGVuUmlnaHQpOwogICAgIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66363</attachid>
            <date>2010-09-02 06:24:56 -0700</date>
            <delta_ts>2010-09-02 11:06:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45044-20100902142454.patch</filename>
            <type>text/plain</type>
            <size>17890</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTFhYjk5ZjJhMThmYTgwODE0YzAwOTE0MDQyZjhlY2FlYmRkYTdkNi4uYmY1ODE4NzUyZGEzYmVh
NDU2NWI3MzgxOGRmMWE3ZDJkODIxOGUxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMC0wOS0wMiAgSmVy
ZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIGNvbmNlcHQgb2YgInN0YXRpYyIgbWV0
aG9kcyB0byBiaW5kaW5ncyAoZm9yIEluZGV4ZWREQidzIElEQktleVJhbmdlKS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MDQ0CisKKyAgICAgICAg
SW5kZXhlZERCJ3MgSURCS2V5UmFuZ2UgaGFzIHdoYXQsIGluIG90aGVyIGxhbmd1YWdlcywgYXJl
IGNhbGxlZCAic3RhdGljIgorICAgICAgICBtZXRob2RzLiBJbiBqYXZhU2NyaXB0IHRlcm1zLCB0
aGVzZSBhcmUgbWV0aG9kcyBvbmx5IGFjY2Vzc2libGUgZnJvbSB0aGVpcgorICAgICAgICBjb25z
dHJ1Y3RvciBhbmQgbm90IGluc3RhbmNlcy4gVGhpcyBjaGFuZ2UgYWRkcyBzdWNoIHN1cHBvcnQg
dG8gVjguIFRoZXJlCisgICAgICAgIGFyZSBhbHJlYWR5IG90aGVyIGZlYXR1cmVzIHJlcXVpcmVk
IGZvciBJbmRleGVkREIgdGhhdCBKU0MgZG9lc24ndCB5ZXQKKyAgICAgICAgc3VwcG9ydCwgc28g
SSdsbCBhZGQgdGhpcyB0byB0aGUgbGlzdCBvZiB0b2RvIGl0ZW1zIGluIHRoZSBtYXN0ZXIgYnVn
CisgICAgICAgIGZvciB0aGF0LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzICsgbXkgY2hhbmdl
IHRvIHRoZSBiaW5kaW5ncyB0ZXN0IGNvdmVyIHRoaXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwOgorICAgICAgICAoV2ViRE9NVGVzdE9iajo6c3RhdGlj
TWV0aG9kKToKKyAgICAgICAgKFdlYkRPTVRlc3RPYmo6OnN0YXRpY01ldGhvZFdpdGhPcHRpb25h
bCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmg6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9i
ai5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3N0YXRpY19tZXRob2QpOgorICAg
ICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zdGF0aWNfbWV0aG9kX3dpdGhfb3B0aW9uYWwpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmou
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RhdGljTWV0aG9kKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RhdGljTWV0aG9k
V2l0aE9wdGlvbmFsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5o
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW06Cisg
ICAgICAgICgtW0RPTVRlc3RPYmogc3RhdGljTWV0aG9kXSk6CisgICAgICAgICgtW0RPTVRlc3RP
Ymogc3RhdGljTWV0aG9kV2l0aE9wdGlvbmFsOl0pOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6c3RhdGlj
TWV0aG9kQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjpzdGF0
aWNNZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1
cmVWOFRlc3RPYmpUZW1wbGF0ZSk6CisgICAgICAgICogc3RvcmFnZS9JREJLZXlSYW5nZS5pZGw6
CisKIDIwMTAtMDgtMzAgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggNTY4MzhjYTJlYmVmYzBjMzFmMmM3YTcy
ZDVhYjYyMDE4ZGM3NzMzMy4uZWRlZjcxMjI5YTAwNGU2YTc5ODExY2VmY2ZiNmI2Yjg2NmMzNjI5
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0x
MTM0LDcgKzExMzQsNyBAQCBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAg
ICBWOFNWR1BPRFR5cGVXcmFwcGVyPCRuYXRpdmVDbGFzc05hbWU+KiBpbXBXcmFwcGVyID0gVjhT
VkdQT0RUeXBlV3JhcHBlcjwkbmF0aXZlQ2xhc3NOYW1lPjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAkbmF0aXZlQ2xh
c3NOYW1lIGltcEluc3RhbmNlID0gKmltcFdyYXBwZXI7XG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICAkbmF0aXZlQ2xhc3NOYW1lKiBpbXAgPSAmaW1wSW5zdGFuY2U7
XG4iKTsKLSAgICB9IGVsc2UgeworICAgIH0gZWxzaWYgKCEkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4U3RhdGljIn0pIHsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgPDxFTkQpOwogICAgICR7aW1wbENsYXNzTmFtZX0qIGltcCA9IFY4JHtpbXBs
Q2xhc3NOYW1lfTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiBFTkQKQEAgLTE3NjEsNiArMTc2
MSw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIGlmICgkYXR0ckV4dC0+
eyJWOE9uSW5zdGFuY2UifSkgewogICAgICAgICAgICAgbmV4dDsKICAgICAgICAgfQorICAgICAg
ICBpZiAoJGF0dHJFeHQtPnsiVjhTdGF0aWMifSkgeworICAgICAgICAgICAgbmV4dDsKKyAgICAg
ICAgfQogICAgICAgICBpZiAoJGF0dHJFeHQtPnsiRW5hYmxlZEF0UnVudGltZSJ9IHx8IFJlcXVp
cmVzQ3VzdG9tU2lnbmF0dXJlKCRmdW5jdGlvbikgfHwgJGF0dHJFeHQtPnsiVjhEb05vdENoZWNr
U2lnbmF0dXJlIn0pIHsKICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgIH0KQEAgLTE5NDYsNiAr
MTk0OSw5IEBAIEVORAogICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhPbkluc3RhbmNlIn0pIHsK
ICAgICAgICAgICAgICR0ZW1wbGF0ZSA9ICJpbnN0YW5jZSI7CiAgICAgICAgIH0KKyAgICAgICAg
aWYgKCRhdHRyRXh0LT57IlY4U3RhdGljIn0pIHsKKyAgICAgICAgICAgICR0ZW1wbGF0ZSA9ICJk
ZXNjIjsKKyAgICAgICAgfQogCiAgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICIiOwogICAgICAg
ICBpZiAoJGF0dHJFeHQtPnsiRW5hYmxlZEF0UnVudGltZSJ9KSB7CkBAIC0xOTgxLDcgKzE5ODcs
NyBAQCBFTkQKICAgICAgIH0KIAogICAgICAgbXkgJHNpZ25hdHVyZSA9ICJkZWZhdWx0U2lnbmF0
dXJlIjsKLSAgICAgIGlmICgkYXR0ckV4dC0+eyJWOERvTm90Q2hlY2tTaWduYXR1cmUifSkgewor
ICAgICAgaWYgKCRhdHRyRXh0LT57IlY4RG9Ob3RDaGVja1NpZ25hdHVyZSJ9IHx8ICRhdHRyRXh0
LT57IlY4U3RhdGljIn0pIHsKICAgICAgICAgICAkc2lnbmF0dXJlID0gInY4OjpMb2NhbDx2ODo6
U2lnbmF0dXJlPigpIjsKICAgICAgIH0KIApAQCAtMjU1NCw2ICsyNTYwLDEwIEBAIHN1YiBHZW5l
cmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygpCiAgICAgICAgICRmdW5jdGlvblN0cmluZyA9ICJyZXN1
bHQuJHtuYW1lfSgiOwogICAgIH0KIAorICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IlY4U3RhdGljIn0pIHsKKyAgICAgICAgJGZ1bmN0aW9uU3RyaW5n
ID0gIiR7aW1wbENsYXNzTmFtZX06OiR7bmFtZX0oIjsKKyAgICB9CisKICAgICBteSAkcmV0dXJu
c0xpc3RJdGVtUG9kVHlwZSA9IDA7CiAgICAgIyBTVkcgbGlzdHMgZnVuY3Rpb25zIHRoYXQgcmV0
dXJuIFBPRCB0eXBlcyByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcKICAgICBpZiAoSXNTVkdMaXN0
VHlwZU5lZWRpbmdTcGVjaWFsSGFuZGxpbmcoJGltcGxDbGFzc05hbWUpICYmIElzU1ZHTGlzdE1l
dGhvZCgkbmFtZSkgJiYgJHJldHVybnNQb2RUeXBlKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAgYi9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKaW5kZXggODgyZTYzM2RhYTZk
MjFiNDdhOTljYWY5NzZlZTQyNzFiZjM3Y2E2Ni4uMzg5NTE1ZmRhNjM5ZGFlOWQyOTFkMzE1NjYy
NmNlZGE2ZDllZjY3MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RPYmouY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0T2JqLmNwcApAQCAtNzQ5LDYgKzc0OSwyMiBAQCB2b2lkIFdlYkRPTVRl
c3RPYmo6Om1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhpbnQgbm9u
T3B0LCBpbnQgbwogICAgIGltcGwoKS0+bWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0
aW9uYWxBcmdzKG5vbk9wdCwgb3B0MSwgb3B0Mik7CiB9CiAKK3ZvaWQgV2ViRE9NVGVzdE9iajo6
c3RhdGljTWV0aG9kKCkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaW1wbCgpLT5zdGF0aWNNZXRob2QoKTsKK30KKworaW50IFdlYkRPTVRlc3RPYmo6OnN0YXRp
Y01ldGhvZFdpdGhPcHRpb25hbChpbnQgYXJnKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHJldHVybiBpbXBsKCktPnN0YXRpY01ldGhvZFdpdGhPcHRpb25h
bChhcmcpOworfQorCiBXZWJDb3JlOjpUZXN0T2JqKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVz
dE9iaiYgd3JhcHBlcikKIHsKICAgICByZXR1cm4gd3JhcHBlci5pbXBsKCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oIGIvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAppbmRleCA3NzBj
ZTUxMGJiNWQ4ZjFmNjFhYWVjOTBhMGZjYjg3ZTM4ZWQ3M2M5Li43NzgxNmJkZjBiNDQ2NzBlZGI1
N2EwMjgzYTM1ZjRhODM4MWI4ZjdkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKQEAgLTE1MCw2ICsxNTAsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBtZXRob2RXaXRoT3B0aW9uYWxBcmcoaW50IG9wdCk7CiAgICAgdm9pZCBtZXRob2RX
aXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyhpbnQgbm9uT3B0LCBpbnQgb3B0KTsKICAg
ICB2b2lkIG1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhpbnQgbm9u
T3B0LCBpbnQgb3B0MSwgaW50IG9wdDIpOworICAgIHZvaWQgc3RhdGljTWV0aG9kKCk7CisgICAg
aW50IHN0YXRpY01ldGhvZFdpdGhPcHRpb25hbChpbnQgYXJnKTsKIAogICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGltcGwoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKaW5kZXggM2MyN2I4MTFk
ZjgxOWNkN2E3ZGNiYWY1ZWJmNzNmNWNkNzQ0NjA1Ny4uNGUxMGY0MDlmMzQ2MjJiMTM4MjBjOTg1
YzUzNzI3YjkxMzI4YTZmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBAIC0zNjQsNiArMzY0LDI1
IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfbm9uX29wdGlvbmFsX2FyZ19hbmRf
dHdvX29wdGlvbmFsX2FyZ3MoV2ViS2l0RE9NCiAgICAgaXRlbS0+bWV0aG9kV2l0aE5vbk9wdGlv
bmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKG5vbl9vcHQsIG9wdDEsIG9wdDIpOwogfQogCit2b2lk
Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3N0YXRpY19tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT5zdGF0aWNNZXRob2QoKTsKK30KKworZ2xvbmcKK3dl
YmtpdF9kb21fdGVzdF9vYmpfc3RhdGljX21ldGhvZF93aXRoX29wdGlvbmFsKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIGdsb25nIGFyZykKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CisgICAgV2Vi
Q29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2xvbmcgcmVz
ID0gaXRlbS0+c3RhdGljTWV0aG9kV2l0aE9wdGlvbmFsKGFyZyk7CisgICAgcmV0dXJuIHJlczsK
K30KKwogZ2xvbmcKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV9pbnRfYXR0cihX
ZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmggYi9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAppbmRleCA0Y2M3OTZkMjc0
ZTNkMDZhOGQ4NDAxNGU4MDI2MWI4MzI4MDNjYTgwLi5lOWNhNzlmOTJhMTE3NjkzNjE2N2Y2MDYz
MTkwMzkxMWMzOTVjYWQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaApAQCAtMTI0LDYgKzEyNCwxMiBAQCB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX25vbl9vcHRpb25hbF9hcmdfYW5kX29wdGlv
bmFsX2FyZyhXZWJLaXRET01UZXN0TwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX21ldGhvZF93aXRoX25vbl9vcHRpb25hbF9hcmdfYW5kX3R3b19vcHRpb25hbF9hcmdzKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIG5vbl9vcHQsIGdsb25nIG9wdDEsIGdsb25nIG9w
dDIpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc3RhdGljX21ldGhv
ZChXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKKworV0VCS0lUX0FQSSBnbG9uZword2Via2l0X2Rv
bV90ZXN0X29ial9zdGF0aWNfbWV0aG9kX3dpdGhfb3B0aW9uYWwoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgZ2xvbmcgYXJnKTsKKwogV0VCS0lUX0FQSSBnbG9uZwogd2Via2l0X2RvbV90ZXN0X29i
al9nZXRfcmVhZF9vbmx5X2ludF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOwogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCAyYTM5
YWM0ZTMxMzQ2NWQ3ZDNlNzAxNmExMjA5OWIzYWYyODhjMjE1Li4wYzhlMDRjOTQ4NzY2NTJkYWEx
MTFmNDJkODQxMzYwN2ZkNWQ1MTI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBib29sIEpTVGVzdE9iakNv
bnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudAogI2RlZmluZSBUSFVOS19HRU5FUkFUT1IoZ2VuZXJhdG9yKQogI2VuZGlmCiAKLXN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1s0
NV0gPQorc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxl
VmFsdWVzWzQ3XSA9CiB7CiAgICAgeyAiQ09OU1RfVkFMVUVfMCIsIERvbnREZWxldGUgfCBSZWFk
T25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RPYmpDT05TVF9WQUxVRV8wKSwgKGludHB0cl90KTAgVEhVTktfR0VORVJBVE9SKDApIH0s
CiAgICAgeyAiQ09OU1RfVkFMVUVfMSIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDT05TVF9W
QUxVRV8xKSwgKGludHB0cl90KTAgVEhVTktfR0VORVJBVE9SKDApIH0sCkBAIC0yMjMsNiArMjIz
LDggQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxl
VmFsdWVzWzQ1XSA9CiAgICAgeyAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tB
cmciLCBEb250RGVsZXRlIHwgRnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tB
cmdBbmRDYWxsYmFja0FyZyksIChpbnRwdHJfdCkyIFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAg
IHsgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIiwgRG9udERlbGV0ZSB8IEZ1bmN0
aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcpLCAoaW50cHRyX3Qp
MSBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7ICJvdmVybG9hZGVkTWV0aG9kIiwgRG9udERl
bGV0ZSB8IEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZCksIChpbnRwdHJfdCkyIFRI
VU5LX0dFTkVSQVRPUigwKSB9LAorICAgIHsgInN0YXRpY01ldGhvZCIsIERvbnREZWxldGUgfCBG
dW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblN0YXRpY01ldGhvZCksIChpbnRwdHJfdCkwIFRIVU5LX0dFTkVSQVRP
UigwKSB9LAorICAgIHsgInN0YXRpY01ldGhvZFdpdGhPcHRpb25hbCIsIERvbnREZWxldGUgfCBG
dW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhPcHRpb25hbCksIChpbnRwdHJfdCkxIFRI
VU5LX0dFTkVSQVRPUigwKSB9LAogICAgIHsgMCwgMCwgMCwgMCBUSFVOS19HRU5FUkFUT1IoMCkg
fQogfTsKIApAQCAtMTQyOCw2ICsxNDMwLDQyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKEV4ZWNTdGF0CiAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdGF0aWNNZXRob2QoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1
ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwor
ICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpOworCisgICAgaW1wLT5zdGF0aWNNZXRob2QoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aE9wdGlvbmFsKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUo
KTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQorICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAg
ICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgp
KTsKKworICAgIGludCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgaWYg
KGFyZ3NDb3VudCA8PSAwKSB7CisKKyAgICAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGV4ZWMsIGltcC0+c3RhdGljTWV0aG9kV2l0aE9wdGlvbmFsKCkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgfQorCisgICAgaW50IGFyZyA9IGV4ZWMt
PmFyZ3VtZW50KDApLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisKKyAg
ICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoZXhlYywgaW1wLT5zdGF0aWNNZXRob2RX
aXRoT3B0aW9uYWwoYXJnKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
fQorCiAvLyBDb25zdGFudCBnZXR0ZXJzCiAKIEpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVf
MChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAppbmRleCA5OTNkZjhjYTkzMDFl
YWY3Zjc3NzVjYmYzOWRiMzExM2M0OTczYWQzLi42ZDgzOWE0YmM3Njk4YmYxYzc4OGZmNThiODQ4
MDFmZmY5YWU2MGI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaApAQCAtMTE5LDYgKzExOSw4IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoSlNDOjpFeGVjU3RhdGUqKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0YXRpY01ldGhvZChKU0M6
OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRl
Kik7CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seUludEF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T2JqLmggYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaApp
bmRleCA0YTBmMDY1NjdlNmIwZGQzOWM2ZjA4MGNkOGFhODhmZGM4ZmMzNjMyLi4wNzBiNTRiYzFj
ZjZmNjZiODU3MmY4NmQ1ZmY5MjQyYTQzYTZlY2E2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaApAQCAtMTQyLDYgKzE0Miw4IEBAIGVudW0g
ewogLSAodm9pZCltZXRob2RXaXRoT3B0aW9uYWxBcmc6KGludClvcHQ7CiAtICh2b2lkKW1ldGhv
ZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnOihpbnQpbm9uT3B0IG9wdDooaW50KW9w
dDsKIC0gKHZvaWQpbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzOihp
bnQpbm9uT3B0IG9wdDE6KGludClvcHQxIG9wdDI6KGludClvcHQyOworLSAodm9pZClzdGF0aWNN
ZXRob2Q7CistIChpbnQpc3RhdGljTWV0aG9kV2l0aE9wdGlvbmFsOihpbnQpYXJnOwogQGVuZAog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE9iai5tbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dE9iai5tbQppbmRleCAwMWZjZjM0ZTlkNjljNTNiYzUxNzdjZjYwOWQyMjYwMDU4M2RkYjc5Li5m
NjJlNjBjYmM4ODgzOWM1NTQ2N2NmMDMyMzJkYTNiZGZjY2ViMWVlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCkBAIC02MzQsNiArNjM0
LDE4IEBACiAgICAgSU1QTC0+bWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxB
cmdzKG5vbk9wdCwgb3B0MSwgb3B0Mik7CiB9CiAKKy0gKHZvaWQpc3RhdGljTWV0aG9kCit7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPnN0YXRp
Y01ldGhvZCgpOworfQorCistIChpbnQpc3RhdGljTWV0aG9kV2l0aE9wdGlvbmFsOihpbnQpYXJn
Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVy
biBJTVBMLT5zdGF0aWNNZXRob2RXaXRoT3B0aW9uYWwoYXJnKTsKK30KKwogQGVuZAogCiBXZWJD
b3JlOjpUZXN0T2JqKiBjb3JlKERPTVRlc3RPYmogKndyYXBwZXIpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IDk0ZjczNGJjN2YxNDViZjhhMjZlOTA4YWRm
MWFjMGE2OTYzNGM4YzMuLjI0ODczMjIyYzM0ZTQ4NDcyYTc0YTJmNTMwNzQwYzBkNzYxYjE5MDcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisr
KyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0xMzcsNiAr
MTM3LDEwIEBAIG1vZHVsZSB0ZXN0IHsKICAgICAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9k
KGluIGxvbmcgaW50QXJnKTsKICNlbmRpZgogCisgICAgICAgIC8vICJTdGF0aWMiIG1ldGhvZHMg
d2l0aGluIEphdmFTY3JpcHQgKGxpa2Ugd2hhdCdzIHVzZWQgZm9yIElEQktleVJhbmdlKS4KKyAg
ICAgICAgW1Y4U3RhdGljXSB2b2lkIHN0YXRpY01ldGhvZCgpOworICAgICAgICBbVjhTdGF0aWNd
IGxvbmcgc3RhdGljTWV0aG9kV2l0aE9wdGlvbmFsKGluIFtPcHRpb25hbF0gbG9uZyBhcmcpOwor
CiAgICAgICAgIC8vIE9iamVjdGl2ZUMgcmVzZXJ2ZWQgd29yZHMuCiAgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBsb25nICAgICAgZGVzY3JpcHRpb247CiAgICAgICAgIGF0dHJpYnV0ZSBsb25n
ICAgICAgICAgICAgICAgaWQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcAppbmRleCA3NDI4YzkzZTY2ZjZiYTg5OGNiMWY2ZjhiMzk0MDY1MTE4Njc1
ODQ3Li5jNjQyZjNjYWQ3ZDRmM2UzNWJmOGYwODA3MTg2NzlhNTcyZDVhZmY4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTk5MCw2ICs5
OTAsMjMgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1cm4gbm90SGFuZGxlZEJ5
SW50ZXJjZXB0b3IoKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdGF0aWNN
ZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmouc3RhdGljTWV0aG9kIik7CisgICAgVGVzdE9iajo6c3RhdGljTWV0aG9k
KCk7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworfQorCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHN0YXRpY01ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5zdGF0
aWNNZXRob2RXaXRoT3B0aW9uYWwiKTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAwKSB7Cisg
ICAgICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KFRlc3RPYmo6OnN0YXRpY01ldGhvZFdpdGhP
cHRpb25hbCgpKTsKKyAgICB9CisgICAgRVhDRVBUSU9OX0JMT0NLKGludCwgYXJnLCB0b0ludDMy
KGFyZ3NbMF0pKTsKKyAgICByZXR1cm4gdjg6OkludGVnZXI6Ok5ldyhUZXN0T2JqOjpzdGF0aWNN
ZXRob2RXaXRoT3B0aW9uYWwoYXJnKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RPYmpJbnRl
cm5hbAogCiBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0T2JqQXR0cnNbXSA9IHsK
QEAgLTExNjMsNiArMTE4MCw4IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNpCiAgICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY3VzdG9tQXJnc0FuZEV4Y2VwdGlvbkFyZ3ZbY3Vz
dG9tQXJnc0FuZEV4Y2VwdGlvbkFyZ2NdID0geyBWOGxvZzo6R2V0UmF3VGVtcGxhdGUoKSB9Owog
ICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY3VzdG9tQXJnc0FuZEV4Y2VwdGlvblNpZ25h
dHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBjdXN0b21BcmdzQW5kRXhjZXB0aW9uQXJn
YywgY3VzdG9tQXJnc0FuZEV4Y2VwdGlvbkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmlu
Zzo6TmV3KCJjdXN0b21BcmdzQW5kRXhjZXB0aW9uIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpO
ZXcoVGVzdE9iakludGVybmFsOjpjdXN0b21BcmdzQW5kRXhjZXB0aW9uQ2FsbGJhY2ssIHY4OjpI
YW5kbGU8djg6OlZhbHVlPigpLCBjdXN0b21BcmdzQW5kRXhjZXB0aW9uU2lnbmF0dXJlKSk7Cisg
ICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ldygic3RhdGljTWV0aG9kIiksIHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoVGVzdE9iakludGVybmFsOjpzdGF0aWNNZXRob2RDYWxsYmFjaywgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpKSk7CisgICAg
ZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ldygic3RhdGljTWV0aG9kV2l0aE9wdGlvbmFsIiksIHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9iakludGVybmFsOjpzdGF0aWNNZXRob2RXaXRo
T3B0aW9uYWxDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpMb2NhbDx2ODo6
U2lnbmF0dXJlPigpKSk7CiAgICAgYmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8s
IFRlc3RPYmpDb25zdHMsIHNpemVvZihUZXN0T2JqQ29uc3RzKSAvIHNpemVvZigqVGVzdE9iakNv
bnN0cykpOwogCiAgICAgLy8gQ3VzdG9tIHRvU3RyaW5nIHRlbXBsYXRlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3N0b3JhZ2UvSURCS2V5UmFuZ2UuaWRsIGIvV2ViQ29yZS9zdG9yYWdlL0lEQktleVJh
bmdlLmlkbAppbmRleCA2ZGFhZWMxYmFkYTRmNjEyNzgwOTNhMTdiOGUzODVkMDkyYzQyMGVjLi5j
ZmViZTZiZWIwYWI1ZWI3MTdlNGIwMDgwODY4Y2VjMDJkYmU3NGQ5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3N0b3JhZ2UvSURCS2V5UmFuZ2UuaWRsCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJLZXlS
YW5nZS5pZGwKQEAgLTM5LDEwICszOSwxMCBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBJREJLZXkgcmlnaHQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBzaG9ydCBmbGFnczsKIAotICAgICAgICBJREJLZXlSYW5nZSBvbmx5KGluIElE
QktleSB2YWx1ZSk7Ci0gICAgICAgIElEQktleVJhbmdlIGxlZnRCb3VuZChpbiBJREJLZXkgYm91
bmQsIGluIFtPcHRpb25hbF0gYm9vbGVhbiBvcGVuKTsKLSAgICAgICAgSURCS2V5UmFuZ2Ugcmln
aHRCb3VuZChpbiBJREJLZXkgYm91bmQsIGluIFtPcHRpb25hbF0gYm9vbGVhbiBvcGVuKTsKLSAg
ICAgICAgSURCS2V5UmFuZ2UgYm91bmQoaW4gSURCS2V5IGxlZnQsIGluIElEQktleSByaWdodCwg
aW4gW09wdGlvbmFsXSBib29sZWFuIG9wZW5MZWZ0LCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gb3Bl
blJpZ2h0KTsKKyAgICAgICAgW1Y4U3RhdGljXSBJREJLZXlSYW5nZSBvbmx5KGluIElEQktleSB2
YWx1ZSk7CisgICAgICAgIFtWOFN0YXRpY10gSURCS2V5UmFuZ2UgbGVmdEJvdW5kKGluIElEQktl
eSBib3VuZCwgaW4gW09wdGlvbmFsXSBib29sZWFuIG9wZW4pOworICAgICAgICBbVjhTdGF0aWNd
IElEQktleVJhbmdlIHJpZ2h0Qm91bmQoaW4gSURCS2V5IGJvdW5kLCBpbiBbT3B0aW9uYWxdIGJv
b2xlYW4gb3Blbik7CisgICAgICAgIFtWOFN0YXRpY10gSURCS2V5UmFuZ2UgYm91bmQoaW4gSURC
S2V5IGxlZnQsIGluIElEQktleSByaWdodCwgaW4gW09wdGlvbmFsXSBib29sZWFuIG9wZW5MZWZ0
LCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gb3BlblJpZ2h0KTsKICAgICB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66387</attachid>
            <date>2010-09-02 11:06:49 -0700</date>
            <delta_ts>2010-09-03 08:56:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45044-20100902190647.patch</filename>
            <type>text/plain</type>
            <size>16843</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTFhYjk5ZjJhMThmYTgwODE0YzAwOTE0MDQyZjhlY2FlYmRkYTdkNi4uMzE1MWJlOTA5MzAzN2Zh
ODRiYWRhNmU5ZDA5OGE2NTQ0YjMzNzFkNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMC0wOS0wMiAgSmVy
ZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIGNvbmNlcHQgb2YgY2xhc3MgbWV0aG9k
cyB0byBiaW5kaW5ncyAoZm9yIEluZGV4ZWREQidzIElEQktleVJhbmdlKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MDQ0CisKKyAgICAgICAgSW5k
ZXhlZERCJ3MgSURCS2V5UmFuZ2UgaGFzIHdoYXQsIGluIG90aGVyIGxhbmd1YWdlcywgYXJlIGNh
bGxlZCBjbGFzcworICAgICAgICBtZXRob2RzLiBJbiBqYXZhU2NyaXB0IHRlcm1zLCB0aGVzZSBh
cmUgbWV0aG9kcyBvbmx5IGFjY2Vzc2libGUgZnJvbSB0aGVpcgorICAgICAgICBjb25zdHJ1Y3Rv
ciBhbmQgbm90IGluc3RhbmNlcy4gVGhpcyBjaGFuZ2UgYWRkcyBzdWNoIHN1cHBvcnQgdG8gVjgu
IFRoZXJlCisgICAgICAgIGFyZSBhbHJlYWR5IG90aGVyIGZlYXR1cmVzIHJlcXVpcmVkIGZvciBJ
bmRleGVkREIgdGhhdCBKU0MgZG9lc24ndCB5ZXQKKyAgICAgICAgc3VwcG9ydCwgc28gSSdsbCBh
ZGQgdGhpcyB0byB0aGUgbGlzdCBvZiB0b2RvIGl0ZW1zIGluIHRoZSBtYXN0ZXIgYnVnCisgICAg
ICAgIGZvciB0aGF0LgorCisgICAgICAgIFRoZSBiaW5kaW5ncyB0ZXN0cyBjb3ZlciB0aGlzLiBN
eSBuZXh0IHBhdGNoIHdpbGwgY2hhbmdlIFdlYkNvcmUgdG8gdXNlCisgICAgICAgIHRoaXMgYW5k
IGl0J2xsIGhhdmUgYXNzb2NpYXRlZCBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwOgorICAgICAgICAoV2ViRE9NVGVzdE9iajo6Y2xh
c3NNZXRob2QpOgorICAgICAgICAoV2ViRE9NVGVzdE9iajo6Y2xhc3NNZXRob2RXaXRoT3B0aW9u
YWwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5o
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RP
YmouY3BwOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19tZXRob2QpOgorICAg
ICAgICAod2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19tZXRob2Rfd2l0aF9vcHRpb25hbCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5o
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdGF0aWNNZXRob2QpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdGF0aWNNZXRob2RX
aXRoT3B0aW9uYWwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmg6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbToKKyAg
ICAgICAgKC1bRE9NVGVzdE9iaiBjbGFzc01ldGhvZF0pOgorICAgICAgICAoLVtET01UZXN0T2Jq
IGNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsOl0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6Y2xhc3NNZXRo
b2RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OmNsYXNzTWV0
aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhU
ZXN0T2JqVGVtcGxhdGUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCS2V5UmFuZ2UuaWRsOgorCiAy
MDEwLTA4LTMwICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDU2ODM4Y2EyZWJlZmMwYzMxZjJjN2E3MmQ1YWI2
MjAxOGRjNzczMzMuLjNkOTg3NWVmODJmOWRjNTQ2MTBhNDVmYjU0YTNkODY0ZGMzOGE2ODEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMTEzNCw3
ICsxMTM0LDcgQEAgRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgVjhT
VkdQT0RUeXBlV3JhcHBlcjwkbmF0aXZlQ2xhc3NOYW1lPiogaW1wV3JhcHBlciA9IFY4U1ZHUE9E
VHlwZVdyYXBwZXI8JG5hdGl2ZUNsYXNzTmFtZT46OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpO1xu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZUNsYXNzTmFt
ZSBpbXBJbnN0YW5jZSA9ICppbXBXcmFwcGVyO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgJG5hdGl2ZUNsYXNzTmFtZSogaW1wID0gJmltcEluc3RhbmNlO1xuIik7
Ci0gICAgfSBlbHNlIHsKKyAgICB9IGVsc2lmICghJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJWOENsYXNzTWV0aG9kIn0pIHsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgPDxFTkQpOwogICAgICR7aW1wbENsYXNzTmFtZX0qIGltcCA9IFY4JHtpbXBs
Q2xhc3NOYW1lfTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiBFTkQKQEAgLTE3NjEsNiArMTc2
MSw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIGlmICgkYXR0ckV4dC0+
eyJWOE9uSW5zdGFuY2UifSkgewogICAgICAgICAgICAgbmV4dDsKICAgICAgICAgfQorICAgICAg
ICBpZiAoJGF0dHJFeHQtPnsiVjhDbGFzc01ldGhvZCJ9KSB7CisgICAgICAgICAgICBuZXh0Owor
ICAgICAgICB9CiAgICAgICAgIGlmICgkYXR0ckV4dC0+eyJFbmFibGVkQXRSdW50aW1lIn0gfHwg
UmVxdWlyZXNDdXN0b21TaWduYXR1cmUoJGZ1bmN0aW9uKSB8fCAkYXR0ckV4dC0+eyJWOERvTm90
Q2hlY2tTaWduYXR1cmUifSkgewogICAgICAgICAgICAgbmV4dDsKICAgICAgICAgfQpAQCAtMTk0
Niw2ICsxOTQ5LDkgQEAgRU5ECiAgICAgICAgIGlmICgkYXR0ckV4dC0+eyJWOE9uSW5zdGFuY2Ui
fSkgewogICAgICAgICAgICAgJHRlbXBsYXRlID0gImluc3RhbmNlIjsKICAgICAgICAgfQorICAg
ICAgICBpZiAoJGF0dHJFeHQtPnsiVjhDbGFzc01ldGhvZCJ9KSB7CisgICAgICAgICAgICAkdGVt
cGxhdGUgPSAiZGVzYyI7CisgICAgICAgIH0KIAogICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAi
IjsKICAgICAgICAgaWYgKCRhdHRyRXh0LT57IkVuYWJsZWRBdFJ1bnRpbWUifSkgewpAQCAtMTk4
MSw3ICsxOTg3LDcgQEAgRU5ECiAgICAgICB9CiAKICAgICAgIG15ICRzaWduYXR1cmUgPSAiZGVm
YXVsdFNpZ25hdHVyZSI7Ci0gICAgICBpZiAoJGF0dHJFeHQtPnsiVjhEb05vdENoZWNrU2lnbmF0
dXJlIn0pIHsKKyAgICAgIGlmICgkYXR0ckV4dC0+eyJWOERvTm90Q2hlY2tTaWduYXR1cmUifSB8
fCAkYXR0ckV4dC0+eyJWOENsYXNzTWV0aG9kIn0pIHsKICAgICAgICAgICAkc2lnbmF0dXJlID0g
InY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpIjsKICAgICAgIH0KIApAQCAtMjU1NCw2ICsyNTYw
LDEwIEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygpCiAgICAgICAgICRmdW5jdGlv
blN0cmluZyA9ICJyZXN1bHQuJHtuYW1lfSgiOwogICAgIH0KIAorICAgIGlmICgkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q2xhc3NNZXRob2QifSkgeworICAg
ICAgICAkZnVuY3Rpb25TdHJpbmcgPSAiJHtpbXBsQ2xhc3NOYW1lfTo6JHtuYW1lfSgiOworICAg
IH0KKwogICAgIG15ICRyZXR1cm5zTGlzdEl0ZW1Qb2RUeXBlID0gMDsKICAgICAjIFNWRyBsaXN0
cyBmdW5jdGlvbnMgdGhhdCByZXR1cm4gUE9EIHR5cGVzIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGlu
ZwogICAgIGlmIChJc1NWR0xpc3RUeXBlTmVlZGluZ1NwZWNpYWxIYW5kbGluZygkaW1wbENsYXNz
TmFtZSkgJiYgSXNTVkdMaXN0TWV0aG9kKCRuYW1lKSAmJiAkcmV0dXJuc1BvZFR5cGUpIHsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2Jq
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNw
cAppbmRleCA4ODJlNjMzZGFhNmQyMWI0N2E5OWNhZjk3NmVlNDI3MWJmMzdjYTY2Li45Y2NlYjNj
MzkzMTA4N2IwZjM3OWJmYzQ0ZDkzNjY3ODUwN2M2ZmVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCkBAIC03NDksNiArNzQ5
LDIyIEBAIHZvaWQgV2ViRE9NVGVzdE9iajo6bWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdv
T3B0aW9uYWxBcmdzKGludCBub25PcHQsIGludCBvCiAgICAgaW1wbCgpLT5tZXRob2RXaXRoTm9u
T3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3Mobm9uT3B0LCBvcHQxLCBvcHQyKTsKIH0KIAor
dm9pZCBXZWJET01UZXN0T2JqOjpjbGFzc01ldGhvZCgpCit7CisgICAgaWYgKCFpbXBsKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGltcGwoKS0+Y2xhc3NNZXRob2QoKTsKK30KKworaW50IFdl
YkRPTVRlc3RPYmo6OmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKGludCBhcmcpCit7CisgICAgaWYg
KCFpbXBsKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGltcGwoKS0+Y2xhc3NN
ZXRob2RXaXRoT3B0aW9uYWwoYXJnKTsKK30KKwogV2ViQ29yZTo6VGVzdE9iaiogdG9XZWJDb3Jl
KGNvbnN0IFdlYkRPTVRlc3RPYmomIHdyYXBwZXIpCiB7CiAgICAgcmV0dXJuIHdyYXBwZXIuaW1w
bCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRP
TVRlc3RPYmouaCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
T2JqLmgKaW5kZXggNzcwY2U1MTBiYjVkOGYxZjYxYWFlYzkwYTBmY2I4N2UzOGVkNzNjOS4uMDM3
YTFkM2I3ODBmNTkzYThlYWNlNzBlN2I4ZjViMTgyZTMyN2MyNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCkBAIC0xNTAsNiArMTUw
LDggQEAgcHVibGljOgogICAgIHZvaWQgbWV0aG9kV2l0aE9wdGlvbmFsQXJnKGludCBvcHQpOwog
ICAgIHZvaWQgbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoaW50IG5vbk9w
dCwgaW50IG9wdCk7CiAgICAgdm9pZCBtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRp
b25hbEFyZ3MoaW50IG5vbk9wdCwgaW50IG9wdDEsIGludCBvcHQyKTsKKyAgICB2b2lkIGNsYXNz
TWV0aG9kKCk7CisgICAgaW50IGNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKGludCBhcmcpOwogCiAg
ICAgV2ViQ29yZTo6VGVzdE9iaiogaW1wbCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApp
bmRleCAzYzI3YjgxMWRmODE5Y2Q3YTdkY2JhZjVlYmY3M2Y1Y2Q3NDQ2MDU3Li5jOWMxMGQ3Njg5
ZWRjMmQ3M2Y4MmZhNTcyNmJkZDkyNzhjZTUyOTljIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCisrKyBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKQEAg
LTM2NCw2ICszNjQsMjUgQEAgd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9ub25fb3B0
aW9uYWxfYXJnX2FuZF90d29fb3B0aW9uYWxfYXJncyhXZWJLaXRET00KICAgICBpdGVtLT5tZXRo
b2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3Mobm9uX29wdCwgb3B0MSwgb3B0
Mik7CiB9CiAKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfY2xhc3NfbWV0aG9kKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+Y2xhc3NNZXRob2QoKTsKK30K
KworZ2xvbmcKK3dlYmtpdF9kb21fdGVzdF9vYmpfY2xhc3NfbWV0aG9kX3dpdGhfb3B0aW9uYWwo
V2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgYXJnKQoreworICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAw
KTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAg
ICBnbG9uZyByZXMgPSBpdGVtLT5jbGFzc01ldGhvZFdpdGhPcHRpb25hbChhcmcpOworICAgIHJl
dHVybiByZXM7Cit9CisKIGdsb25nCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWFkX29ubHlf
aW50X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oIGIvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKaW5kZXgg
NGNjNzk2ZDI3NGUzZDA2YThkODQwMTRlODAyNjFiODMyODAzY2E4MC4uOGVlOGYwNDllZjE4MTE1
MWJhMTBkMmE1MTI5NTBhYjdkOTI3ZTcyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKQEAgLTEyNCw2ICsx
MjQsMTIgQEAgd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9ub25fb3B0aW9uYWxfYXJn
X2FuZF9vcHRpb25hbF9hcmcoV2ViS2l0RE9NVGVzdE8KIFdFQktJVF9BUEkgdm9pZAogd2Via2l0
X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9ub25fb3B0aW9uYWxfYXJnX2FuZF90d29fb3B0aW9u
YWxfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBub25fb3B0LCBnbG9uZyBvcHQx
LCBnbG9uZyBvcHQyKTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2Ns
YXNzX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKKworV0VCS0lUX0FQSSBnbG9uZwor
d2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19tZXRob2Rfd2l0aF9vcHRpb25hbChXZWJLaXRET01U
ZXN0T2JqKiBzZWxmLCBnbG9uZyBhcmcpOworCiBXRUJLSVRfQVBJIGdsb25nCiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX2dldF9yZWFkX29ubHlfaW50X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmlu
ZGV4IDJhMzlhYzRlMzEzNDY1ZDdkM2U3MDE2YTEyMDk5YjNhZjI4OGMyMTUuLjU3MDMxYWZlMzk4
NjI5MzY0N2ZmZTNjMmVhMTUzZmJlNWU5MDM5MWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIGJvb2wgSlNU
ZXN0T2JqQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50CiAjZGVmaW5lIFRIVU5LX0dFTkVSQVRPUihnZW5lcmF0b3IpCiAjZW5k
aWYKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxl
VmFsdWVzWzQ1XSA9CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90
eXBlVGFibGVWYWx1ZXNbNDddID0KIHsKICAgICB7ICJDT05TVF9WQUxVRV8wIiwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE9iakNPTlNUX1ZBTFVFXzApLCAoaW50cHRyX3QpMCBUSFVOS19HRU5FUkFU
T1IoMCkgfSwKICAgICB7ICJDT05TVF9WQUxVRV8xIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9i
akNPTlNUX1ZBTFVFXzEpLCAoaW50cHRyX3QpMCBUSFVOS19HRU5FUkFUT1IoMCkgfSwKQEAgLTIy
Myw2ICsyMjMsOCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90
eXBlVGFibGVWYWx1ZXNbNDVdID0KICAgICB7ICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRD
YWxsYmFja0FyZyIsIERvbnREZWxldGUgfCBGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0
PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25D
YWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKSwgKGludHB0cl90KTIgVEhVTktfR0VORVJBVE9SKDAp
IH0sCiAgICAgeyAibWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciLCBEb250RGVsZXRl
IHwgRnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyksIChp
bnRwdHJfdCkxIFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAgIHsgIm92ZXJsb2FkZWRNZXRob2Qi
LCBEb250RGVsZXRlIHwgRnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5j
dGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKSwgKGludHB0
cl90KTIgVEhVTktfR0VORVJBVE9SKDApIH0sCisgICAgeyAiY2xhc3NNZXRob2QiLCBEb250RGVs
ZXRlIHwgRnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZCksIChpbnRwdHJfdCkwIFRIVU5LX0dF
TkVSQVRPUigwKSB9LAorICAgIHsgImNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsIiwgRG9udERlbGV0
ZSB8IEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwpLCAoaW50cHRyX3Qp
MSBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7IDAsIDAsIDAsIDAgVEhVTktfR0VORVJBVE9S
KDApIH0KIH07CiAKQEAgLTE0MjgsNiArMTQzMCw0MiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZChFeGVjU3Rh
dAogICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogfQogCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2QoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNW
YWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkp
OworICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5p
bXBsKCkpOworCisgICAgaW1wLT5jbGFzc01ldGhvZCgpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25hbChFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVl
KCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Cisg
ICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwo
KSk7CisKKyAgICBpbnQgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIGlm
IChhcmdzQ291bnQgPD0gMCkgeworCisgICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcihleGVjLCBpbXAtPmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKCkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgfQorCisgICAgaW50IGFyZyA9IGV4ZWMt
PmFyZ3VtZW50KDApLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisKKyAg
ICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoZXhlYywgaW1wLT5jbGFzc01ldGhvZFdp
dGhPcHRpb25hbChhcmcpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9
CisKIC8vIENvbnN0YW50IGdldHRlcnMKIAogSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8w
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaCBiL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCmluZGV4IDk5M2RmOGNhOTMwMWVh
ZjdmNzc3NWNiZjM5ZGIzMTEzYzQ5NzNhZDMuLjIxNjhiM2Y0MmU5ZDRiMmMwMDAzODAyMGFjYTY2
ZDEzNzdlYWE4ZDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5oCkBAIC0xMTksNiArMTE5LDggQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXIKIEpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKEpTQzo6RXhlY1N0YXRlKik7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhKU0M6OkV4ZWNTdGF0ZSopOwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2QoSlNDOjpF
eGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlKik7
CiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seUludEF0dHIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2Jq
LmggYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAppbmRl
eCA0YTBmMDY1NjdlNmIwZGQzOWM2ZjA4MGNkOGFhODhmZGM4ZmMzNjMyLi4xMzJiMjE1YWVhYWNm
NjFhNmUwY2MwZDZjYjQwM2MwYmQxMmExMjVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaApAQCAtMTQyLDYgKzE0Miw4IEBAIGVudW0gewog
LSAodm9pZCltZXRob2RXaXRoT3B0aW9uYWxBcmc6KGludClvcHQ7CiAtICh2b2lkKW1ldGhvZFdp
dGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnOihpbnQpbm9uT3B0IG9wdDooaW50KW9wdDsK
IC0gKHZvaWQpbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzOihpbnQp
bm9uT3B0IG9wdDE6KGludClvcHQxIG9wdDI6KGludClvcHQyOworLSAodm9pZCljbGFzc01ldGhv
ZDsKKy0gKGludCljbGFzc01ldGhvZFdpdGhPcHRpb25hbDooaW50KWFyZzsKIEBlbmQKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RPYmoubW0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
bW0KaW5kZXggMDFmY2YzNGU5ZDY5YzUzYmM1MTc3Y2Y2MDlkMjI2MDA1ODNkZGI3OS4uOTcyNWIy
NDAzNzA4NTBiNjYxMzIzYzllNTNlZWU2ZjIxZDk3ZjY4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAtNjM0LDYgKzYzNCwxOCBA
QAogICAgIElNUEwtPm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhu
b25PcHQsIG9wdDEsIG9wdDIpOwogfQogCistICh2b2lkKWNsYXNzTWV0aG9kCit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPmNsYXNzTWV0aG9k
KCk7Cit9CisKKy0gKGludCljbGFzc01ldGhvZFdpdGhPcHRpb25hbDooaW50KWFyZworeworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+
Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoYXJnKTsKK30KKwogQGVuZAogCiBXZWJDb3JlOjpUZXN0
T2JqKiBjb3JlKERPTVRlc3RPYmogKndyYXBwZXIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCmluZGV4IDk0ZjczNGJjN2YxNDViZjhhMjZlOTA4YWRmMWFjMGE2OTYz
NGM4YzMuLmRlYWVjM2JkZDcyMmRjNTVkN2U1YzFiNGQzODg2NjBjMmM2M2IyZmIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0xMzcsNiArMTM3LDEwIEBA
IG1vZHVsZSB0ZXN0IHsKICAgICAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKGluIGxvbmcg
aW50QXJnKTsKICNlbmRpZgogCisgICAgICAgIC8vIENsYXNzIG1ldGhvZHMgd2l0aGluIEphdmFT
Y3JpcHQgKGxpa2Ugd2hhdCdzIHVzZWQgZm9yIElEQktleVJhbmdlKS4KKyAgICAgICAgW1Y4Q2xh
c3NNZXRob2RdIHZvaWQgY2xhc3NNZXRob2QoKTsKKyAgICAgICAgW1Y4Q2xhc3NNZXRob2RdIGxv
bmcgY2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoaW4gW09wdGlvbmFsXSBsb25nIGFyZyk7CisKICAg
ICAgICAgLy8gT2JqZWN0aXZlQyByZXNlcnZlZCB3b3Jkcy4KICAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgICAgICBkZXNjcmlwdGlvbjsKICAgICAgICAgYXR0cmlidXRlIGxvbmcgICAg
ICAgICAgICAgICBpZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE9iai5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPYmouY3BwCmluZGV4IDc0MjhjOTNlNjZmNmJhODk4Y2IxZjZmOGIzOTQwNjUxMTg2NzU4NDcu
LjM2OWRjNjU1ZmMxNWZlMTk5Yzc3NjFmYTZlZWRjMzA0ZWVjZDhjNTQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtOTkwLDYgKzk5MCwy
MyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2RDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRl
cmNlcHRvcigpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNsYXNzTWV0aG9k
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0T2JqLmNsYXNzTWV0aG9kIik7CisgICAgVGVzdE9iajo6Y2xhc3NNZXRob2QoKTsKKyAg
ICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY2xhc3NNZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouY2xhc3NNZXRob2RX
aXRoT3B0aW9uYWwiKTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAwKSB7CisgICAgICAgIHJl
dHVybiB2ODo6SW50ZWdlcjo6TmV3KFRlc3RPYmo6OmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKCkp
OworICAgIH0KKyAgICBFWENFUFRJT05fQkxPQ0soaW50LCBhcmcsIHRvSW50MzIoYXJnc1swXSkp
OworICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KFRlc3RPYmo6OmNsYXNzTWV0aG9kV2l0aE9w
dGlvbmFsKGFyZykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0T2JqSW50ZXJuYWwKIAogc3Rh
dGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgVGVzdE9iakF0dHJzW10gPSB7CkBAIC0xMTYzLDYg
KzExODAsOCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQogICAgIHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IGN1c3RvbUFyZ3NBbmRFeGNlcHRpb25Bcmd2W2N1c3RvbUFyZ3NBbmRF
eGNlcHRpb25BcmdjXSA9IHsgVjhsb2c6OkdldFJhd1RlbXBsYXRlKCkgfTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpTaWduYXR1cmU+IGN1c3RvbUFyZ3NBbmRFeGNlcHRpb25TaWduYXR1cmUgPSB2ODo6
U2lnbmF0dXJlOjpOZXcoZGVzYywgY3VzdG9tQXJnc0FuZEV4Y2VwdGlvbkFyZ2MsIGN1c3RvbUFy
Z3NBbmRFeGNlcHRpb25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiY3Vz
dG9tQXJnc0FuZEV4Y2VwdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpJ
bnRlcm5hbDo6Y3VzdG9tQXJnc0FuZEV4Y2VwdGlvbkNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKSwgY3VzdG9tQXJnc0FuZEV4Y2VwdGlvblNpZ25hdHVyZSkpOworICAgIGRlc2MtPlNl
dCh2ODo6U3RyaW5nOjpOZXcoImNsYXNzTWV0aG9kIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpO
ZXcoVGVzdE9iakludGVybmFsOjpjbGFzc01ldGhvZENhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKSwgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkpKTsKKyAgICBkZXNjLT5TZXQodjg6
OlN0cmluZzo6TmV3KCJjbGFzc01ldGhvZFdpdGhPcHRpb25hbCIpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFRlc3RPYmpJbnRlcm5hbDo6Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFj
aywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpKSk7
CiAgICAgYmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8sIFRlc3RPYmpDb25zdHMs
IHNpemVvZihUZXN0T2JqQ29uc3RzKSAvIHNpemVvZigqVGVzdE9iakNvbnN0cykpOwogCiAgICAg
Ly8gQ3VzdG9tIHRvU3RyaW5nIHRlbXBsYXRlCg==
</data>
<flag name="review"
          id="55392"
          type_id="1"
          status="+"
          setter="japhet"
    />
          </attachment>
      

    </bug>

</bugzilla>