<?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>87792</bug_id>
          
          <creation_ts>2012-05-29 16:34:09 -0700</creation_ts>
          <short_desc>SVGImageCache leaks image data</short_desc>
          <delta_ts>2012-06-11 13:16:09 -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>Layout and Rendering</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>http://petelepage.com/scratch/breel2/</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="Xianzhu Wang">wangxianzhu</reporter>
          <assigned_to name="Xianzhu Wang">wangxianzhu</assigned_to>
          <cc>aelias</cc>
    
    <cc>antonm</cc>
    
    <cc>eric</cc>
    
    <cc>inferno</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>krit</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>senorblanco</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>636548</commentid>
    <comment_count>0</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-05-29 16:34:09 -0700</bug_when>
    <thetext>http://petelepage.com/scratch/breel2/
Old image buffers in SVGImageCache are not deleted when a renderer is destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636576</commentid>
    <comment_count>1</comment_count>
      <attachid>144642</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-05-29 17:04:22 -0700</bug_when>
    <thetext>Created attachment 144642
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636593</commentid>
    <comment_count>2</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-05-29 17:11:51 -0700</bug_when>
    <thetext>I&apos;m also thinking of a more complete fix to avoid accidental usage of CachedImage::removeClient() (which will leak SVGImageCache):
1) Make CachedResource::addClient() and CachedResource::removeClient() virtual
2) Change the type of the key of the maps in SVGImageCache from RenderObject* to CachedResourceClient*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636636</commentid>
    <comment_count>3</comment_count>
      <attachid>144662</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-05-29 17:39:09 -0700</bug_when>
    <thetext>Created attachment 144662
The more complete patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636674</commentid>
    <comment_count>4</comment_count>
      <attachid>144662</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-29 18:20:05 -0700</bug_when>
    <thetext>Comment on attachment 144662
The more complete patch

Attachment 144662 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12843661</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637692</commentid>
    <comment_count>5</comment_count>
      <attachid>144923</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-05-30 14:29:43 -0700</bug_when>
    <thetext>Created attachment 144923
patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638189</commentid>
    <comment_count>6</comment_count>
      <attachid>144923</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-31 03:25:04 -0700</bug_when>
    <thetext>Comment on attachment 144923
patch v2

Patch looks good to me on first sight, you still need to add a testcase though. r- for the lack of a testcase. We have leak bots at build.webkit.org/waterfall that would catch if this ever leaks again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638524</commentid>
    <comment_count>7</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-05-31 10:15:07 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 144923 [details])
&gt; Patch looks good to me on first sight, you still need to add a testcase though. r- for the lack of a testcase. We have leak bots at build.webkit.org/waterfall that would catch if this ever leaks again.

Thanks. However, it&apos;ll need some time to write the testcase because of my limited bandwidth. Wondering which of the following choices would look good to you:
1. Wait for my test to be added
2. File another bug for adding the test after landing this patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639481</commentid>
    <comment_count>8</comment_count>
      <attachid>145334</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-06-01 10:04:28 -0700</bug_when>
    <thetext>Created attachment 145334
patch (with test)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640010</commentid>
    <comment_count>9</comment_count>
      <attachid>145334</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-06-02 03:35:08 -0700</bug_when>
    <thetext>Comment on attachment 145334
patch (with test)

Looks great, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640132</commentid>
    <comment_count>10</comment_count>
      <attachid>145334</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-02 22:06:27 -0700</bug_when>
    <thetext>Comment on attachment 145334
patch (with test)

Clearing flags on attachment: 145334

Committed r119353: &lt;http://trac.webkit.org/changeset/119353&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640133</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-02 22:06:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645449</commentid>
    <comment_count>12</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2012-06-09 22:55:29 -0700</bug_when>
    <thetext>Sorry, but this patch was rolled out due to dependency on http://trac.webkit.org/changeset/118618. r118618 caused a whole bunch of security crashes due to reentering the loader during tear-down of render tree objects. Xianzhu, let me ping you explaining this in more detail or if you see me (aarya@google) online, please feel free to ping me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646119</commentid>
    <comment_count>13</comment_count>
      <attachid>146880</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-06-11 11:23:17 -0700</bug_when>
    <thetext>Created attachment 146880
patch rebased

Confirmed with Abhishek that this patch is good but depends on another problematic patch which was rolled-out. Rebased the patch and re-apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646198</commentid>
    <comment_count>14</comment_count>
      <attachid>146880</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-11 13:16:03 -0700</bug_when>
    <thetext>Comment on attachment 146880
patch rebased

Clearing flags on attachment: 146880

Committed r120000: &lt;http://trac.webkit.org/changeset/120000&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646199</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-11 13:16:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144642</attachid>
            <date>2012-05-29 17:04:22 -0700</date>
            <delta_ts>2012-05-30 14:29:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>87792</filename>
            <type>text/plain</type>
            <size>1935</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExODg1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA1LTI5ICBYaWFuemh1
IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU1ZHSW1hZ2VDYWNo
ZSBsZWFrcyBpbWFnZSBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04Nzc5MgorCisgICAgICAgIE9yaWdpbmFsbHkgQ2FjaGVkUmVzb3VyY2U6OnJl
bW92ZUNsaWVudCgpIGlzIGNhbGxlZCB3aGVuIGEgUmVuZGVySW1hZ2UKKyAgICAgICAgaXMgYWJv
dXQgdG8gYmUgZGVzdHJveWVkLCB3aGljaCB3aWxsIGxlYWsgdGhlIGNhY2hlZCBpbWFnZSBidWZm
ZXJzIGluCisgICAgICAgIFNWR0ltYWdlQ2FjaGUuIEluIHRoZSBjaGFuZ2UsIENhY2hlZEltYWdl
OjpyZW1vdmVDbGllbnRGb3JSZW5kZXJlcigpIGlzCisgICAgICAgIGNhbGxlZCBpbnN0ZWFkLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gT3BlbiBodHRwOi8vcGV0ZWxlcGFnZS5jb20vc2NyYXRjaC9icmVlbDIvCisgICAgICAg
IHRvIHNlZSBpZiB0aGVyZSBpcyBtZW1vcnkgbGVhay4KKworICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJJbWFnZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVz
b3VyY2U6OnNodXRkb3duKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6
OnNldENhY2hlZEltYWdlKToKKwogMjAxMi0wNS0yOSAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdo
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIG1ha2UgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggb2JqZWN0IHVzYWJsZSBieSBub24td2Via2l0IGNvZGUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAJKHJldmlzaW9u
IDExODg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFJlbmRlckltYWdlUmVz
b3VyY2U6OnNodXRkb3duKCkKICAgICBBU1NFUlQobV9yZW5kZXJlcik7CiAKICAgICBpZiAobV9j
YWNoZWRJbWFnZSkKLSAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KG1fcmVuZGVy
ZXIpOworICAgICAgICBtX2NhY2hlZEltYWdlLT5yZW1vdmVDbGllbnRGb3JSZW5kZXJlcihtX3Jl
bmRlcmVyKTsKIH0KIAogdm9pZCBSZW5kZXJJbWFnZVJlc291cmNlOjpzZXRDYWNoZWRJbWFnZShD
YWNoZWRJbWFnZSogbmV3SW1hZ2UpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgUmVuZGVySW1hZ2VS
ZXNvdXJjZTo6c2V0Q2FjaGVkSW1hZ2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fY2Fj
aGVkSW1hZ2UpCi0gICAgICAgIG1fY2FjaGVkSW1hZ2UtPnJlbW92ZUNsaWVudChtX3JlbmRlcmVy
KTsKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50Rm9yUmVuZGVyZXIobV9yZW5k
ZXJlcik7CiAgICAgbV9jYWNoZWRJbWFnZSA9IG5ld0ltYWdlOwogICAgIGlmIChtX2NhY2hlZElt
YWdlKSB7CiAgICAgICAgIG1fY2FjaGVkSW1hZ2UtPmFkZENsaWVudChtX3JlbmRlcmVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144662</attachid>
            <date>2012-05-29 17:39:09 -0700</date>
            <delta_ts>2012-05-30 14:29:43 -0700</delta_ts>
            <desc>The more complete patch</desc>
            <filename>87792-alt</filename>
            <type>text/plain</type>
            <size>12447</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExODg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA1LTI5ICBYaWFuemh1
IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU1ZHSW1hZ2VDYWNo
ZSBsZWFrcyBpbWFnZSBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04Nzc5MgorCisgICAgICAgIFRoZXJlIGFyZSB0d28gZnVuY3Rpb25zIHRvIHJl
bW92ZSBhIGNsaWVudCBmcm9tIGEgQ2FjaGVkSW1hZ2U6CisgICAgICAgIC0gQ2FjaGVkUmVzb3Vy
Y2U6OnJlbW92ZUNsaWVudCgpCisgICAgICAgIC0gQ2FjaGVkSW1hZ2U6OnJlbW92ZUNsaWVudEZv
clJlbmRlcmVyKCkuCisgICAgICAgIEl0J3MgZWFzeSB0byBtYWtlIGVycm9yIHRvIGNhbGwgdGhl
IGZvcm1lciB3aGljaCB3aWxsIGxlYWsgdGhlIGNhY2hlZAorICAgICAgICBpbWFnZSBidWZmZXJz
IGluIFNWR0ltYWdlQ2FjaGUuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgY29tYmluZWQgdGhlIHR3
byBieSBhZGRpbmcgdGhlIHZpcnR1YWwgCisgICAgICAgIENhY2hlZFJlc291cmNlOjpkaWRSZW1v
dmVDbGllbnQoKS4gQ2FjaGVkSW1hZ2Ugd2lsbCBkbyBTVkdJbWFnZUNhY2hlCisgICAgICAgIGNs
ZWFudXAgaW4gdGhlIGZ1bmN0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gT3BlbiBodHRwOi8vcGV0ZWxlcGFnZS5jb20v
c2NyYXRjaC9icmVlbDIvCisgICAgICAgIHRvIHNlZSBpZiB0aGVyZSBpcyBtZW1vcnkgbGVhay4K
KworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpkaWRSZW1vdmVDbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Omxvb2t1cE9yQ3JlYXRlSW1hZ2VGb3JSZW5k
ZXJlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgIChD
YWNoZWRJbWFnZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpkaWRSZW1vdmVDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVtb3Zl
Q2xpZW50KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAg
ICAgKENhY2hlZFJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNo
ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlOjpyZW1vdmVD
bGllbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OnJlbW92ZUNsaWVudCk6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VDYWNoZTo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlQ2FjaGU6OnNldFJlcXVlc3RlZFNpemVBbmRTY2FsZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6cmVxdWVzdGVkU2l6ZUFuZFNjYWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9y
Q2xpZW50KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdJbWFnZUNhY2hlKToKKwogMjAxMi0wNS0yOSAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFNv
bWUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY29uc29sZSBtZXNzYWdlcyBhcmUgbWlzc2luZyBs
aW5lIG51bWJlcnMgaW4gSlNDCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDExODg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDE1ICs5Miw2IEBA
IHZvaWQgQ2FjaGVkSW1hZ2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2EKICAgICAgICAgc2V0TG9h
ZGluZyhmYWxzZSk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnJlbW92ZUNsaWVudEZvclJlbmRl
cmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCi17Ci0jaWYgRU5BQkxFKFNWRykKLSAgICBpZiAo
bV9zdmdJbWFnZUNhY2hlKQotICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUtPnJlbW92ZVJlbmRlcmVy
RnJvbUNhY2hlKHJlbmRlcmVyKTsKLSNlbmRpZgotICAgIHJlbW92ZUNsaWVudChyZW5kZXJlcik7
Ci19Ci0KIHZvaWQgQ2FjaGVkSW1hZ2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVu
dCogYykKIHsKICAgICBpZiAobV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIuaXNBY3RpdmUoKSkK
QEAgLTExOCw2ICsxMDksMTYgQEAgdm9pZCBDYWNoZWRJbWFnZTo6ZGlkQWRkQ2xpZW50KENhY2hl
ZFJlcwogICAgIENhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQoYyk7CiB9CiAKK3ZvaWQgQ2Fj
aGVkSW1hZ2U6OmRpZFJlbW92ZUNsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKK3sKKyNp
ZiBFTkFCTEUoU1ZHKQorICAgIGlmIChtX3N2Z0ltYWdlQ2FjaGUpCisgICAgICAgIG1fc3ZnSW1h
Z2VDYWNoZS0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKGMpOworI2VuZGlmCisKKyAgICBDYWNoZWRS
ZXNvdXJjZTo6ZGlkUmVtb3ZlQ2xpZW50KGMpOworfQorCiB2b2lkIENhY2hlZEltYWdlOjphbGxD
bGllbnRzUmVtb3ZlZCgpCiB7CiAgICAgaWYgKG1faW1hZ2UgJiYgIWVycm9yT2NjdXJyZWQoKSkK
QEAgLTE1MCw3ICsxNTEsNyBAQCBpbmxpbmUgSW1hZ2UqIENhY2hlZEltYWdlOjpsb29rdXBPckNy
ZWF0CiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghbV9pbWFnZS0+aXNTVkdJbWFnZSgpKQog
ICAgICAgICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKLSAgICBJbWFnZSogdXNlSW1hZ2UgPSBtX3N2
Z0ltYWdlQ2FjaGUtPmxvb2t1cE9yQ3JlYXRlQml0bWFwSW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJl
cik7CisgICAgSW1hZ2UqIHVzZUltYWdlID0gbV9zdmdJbWFnZUNhY2hlLT5sb29rdXBPckNyZWF0
ZUJpdG1hcEltYWdlRm9yQ2xpZW50KHJlbmRlcmVyKTsKICAgICBpZiAodXNlSW1hZ2UgPT0gSW1h
Z2U6Om51bGxJbWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKICAgICByZXR1
cm4gdXNlSW1hZ2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAkocmV2aXNpb24gMTE4ODU1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDkgKzY3LDkgQEAgcHVibGljOgogICAg
IEludFNpemUgaW1hZ2VTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgZmxvYXQg
bXVsdGlwbGllcik7IC8vIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIGNvbXBsZXRlIGltYWdlLgog
ICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0
aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pOwog
Ci0gICAgdm9pZCByZW1vdmVDbGllbnRGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QqKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7Ci0gICAgCisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZUNsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwor
CiAgICAgdmlydHVhbCB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRlc3Ryb3lEZWNvZGVkRGF0YSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDExODg1NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM4Nyw2ICszODcsMTAgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hl
ZAogICAgICAgICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsKIH0KIAordm9pZCBDYWNoZWRSZXNv
dXJjZTo6ZGlkUmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQoreworfQorCiB2
b2lkIENhY2hlZFJlc291cmNlOjphbGxDbGllbnRzUmVtb3ZlZCgpCiB7CiAgICAgaWYgKG1fbG9h
ZGVyKQpAQCAtNDMyLDYgKzQzNiw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlbW92ZUNsaWVu
dChDYWNoZWQKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5z
KGNsaWVudCkpOwogICAgICAgICBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7CisgICAgICAgIGRp
ZFJlbW92ZUNsaWVudChjbGllbnQpOwogICAgIH0KIAogICAgIGlmIChjYW5EZWxldGUoKSAmJiAh
aW5DYWNoZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgJKHJldmlzaW9uIDExODg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgcHVi
bGljOgogICAgIFByZWxvYWRSZXN1bHQgcHJlbG9hZFJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PFByZWxvYWRSZXN1bHQ+KG1fcHJlbG9hZFJlc3VsdCk7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7CiAgICAgdmlydHVh
bCB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCk7CiAKICAgICB1bnNpZ25lZCBjb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpZW50cy5zaXplKCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDExODg1
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFN0eWxlQ2FjaGVkSW1hZ2U6
OmFkZENsaWVudChSZW5kZXJPCiAKIHZvaWQgU3R5bGVDYWNoZWRJbWFnZTo6cmVtb3ZlQ2xpZW50
KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgbV9pbWFnZS0+cmVtb3ZlQ2xpZW50Rm9y
UmVuZGVyZXIocmVuZGVyZXIpOworICAgIG1faW1hZ2UtPnJlbW92ZUNsaWVudChyZW5kZXJlcik7
CiB9CiAKIFBhc3NSZWZQdHI8SW1hZ2U+IFN0eWxlQ2FjaGVkSW1hZ2U6OmltYWdlKFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmKSBjb25zdApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNwcAko
cmV2aXNpb24gMTE4ODU1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q2FjaGVkSW1hZ2VTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9p
ZCBTdHlsZUNhY2hlZEltYWdlU2V0OjphZGRDbGllbnQoUmVuZAogCiB2b2lkIFN0eWxlQ2FjaGVk
SW1hZ2VTZXQ6OnJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIG1f
YmVzdEZpdEltYWdlLT5yZW1vdmVDbGllbnRGb3JSZW5kZXJlcihyZW5kZXJlcik7CisgICAgbV9i
ZXN0Rml0SW1hZ2UtPnJlbW92ZUNsaWVudChyZW5kZXJlcik7CiB9CiAKIFBhc3NSZWZQdHI8SW1h
Z2U+IFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmltYWdlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNv
bnN0IEludFNpemUmKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUNhY2hlLmNwcAkocmV2aXNpb24gMTE4ODU1KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMiAr
NDcsMTIgQEAgU1ZHSW1hZ2VDYWNoZTo6flNWR0ltYWdlQ2FjaGUoKQogICAgIG1faW1hZ2VEYXRh
TWFwLmNsZWFyKCk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VDYWNoZTo6cmVtb3ZlUmVuZGVyZXJGcm9t
Q2FjaGUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3ZvaWQgU1ZHSW1hZ2VDYWNoZTo6
cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKGNvbnN0IENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQp
CiB7Ci0gICAgQVNTRVJUKHJlbmRlcmVyKTsKLSAgICBtX3NpemVBbmRTY2FsZXNNYXAucmVtb3Zl
KHJlbmRlcmVyKTsKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAgICBtX3NpemVBbmRTY2FsZXNNYXAu
cmVtb3ZlKGNsaWVudCk7CiAKLSAgICBJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFn
ZURhdGFNYXAuZmluZChyZW5kZXJlcik7CisgICAgSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBpdCA9
IG1faW1hZ2VEYXRhTWFwLmZpbmQoY2xpZW50KTsKICAgICBpZiAoaXQgPT0gbV9pbWFnZURhdGFN
YXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjAsMTcgKzYwLDE3IEBAIHZvaWQgU1ZH
SW1hZ2VDYWNoZTo6cmVtb3ZlUmVuZGVyZXJGcm9tQ2EKICAgICBtX2ltYWdlRGF0YU1hcC5yZW1v
dmUoaXQpOwogfQogCi12b2lkIFNWR0ltYWdlQ2FjaGU6OnNldFJlcXVlc3RlZFNpemVBbmRTY2Fs
ZXMoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgU2l6ZUFuZFNjYWxlcyYgc2l6
ZUFuZFNjYWxlcykKK3ZvaWQgU1ZHSW1hZ2VDYWNoZTo6c2V0UmVxdWVzdGVkU2l6ZUFuZFNjYWxl
cyhjb25zdCBDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50LCBjb25zdCBTaXplQW5kU2NhbGVz
JiBzaXplQW5kU2NhbGVzKQogewotICAgIEFTU0VSVChyZW5kZXJlcik7CisgICAgQVNTRVJUKGNs
aWVudCk7CiAgICAgQVNTRVJUKCFzaXplQW5kU2NhbGVzLnNpemUuaXNFbXB0eSgpKTsKLSAgICBt
X3NpemVBbmRTY2FsZXNNYXAuc2V0KHJlbmRlcmVyLCBzaXplQW5kU2NhbGVzKTsKKyAgICBtX3Np
emVBbmRTY2FsZXNNYXAuc2V0KGNsaWVudCwgc2l6ZUFuZFNjYWxlcyk7CiB9CiAKLVNWR0ltYWdl
Q2FjaGU6OlNpemVBbmRTY2FsZXMgU1ZHSW1hZ2VDYWNoZTo6cmVxdWVzdGVkU2l6ZUFuZFNjYWxl
cyhjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorU1ZHSW1hZ2VDYWNoZTo6U2l6
ZUFuZFNjYWxlcyBTVkdJbWFnZUNhY2hlOjpyZXF1ZXN0ZWRTaXplQW5kU2NhbGVzKGNvbnN0IENh
Y2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHJlbmRlcmVy
KTsKLSAgICBTaXplQW5kU2NhbGVzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc2l6ZUFuZFNj
YWxlc01hcC5maW5kKHJlbmRlcmVyKTsKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAgICBTaXplQW5k
U2NhbGVzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc2l6ZUFuZFNjYWxlc01hcC5maW5kKGNs
aWVudCk7CiAgICAgaWYgKGl0ID09IG1fc2l6ZUFuZFNjYWxlc01hcC5lbmQoKSkKICAgICAgICAg
cmV0dXJuIFNpemVBbmRTY2FsZXMoKTsKICAgICByZXR1cm4gaXQtPnNlY29uZDsKQEAgLTEyMiwx
MiArMTIyLDEyIEBAIHZvaWQgU1ZHSW1hZ2VDYWNoZTo6cmVkcmF3VGltZXJGaXJlZChUaW0KICAg
ICAgICByZWRyYXcoKTsKIH0KIAotSW1hZ2UqIFNWR0ltYWdlQ2FjaGU6Omxvb2t1cE9yQ3JlYXRl
Qml0bWFwSW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorSW1h
Z2UqIFNWR0ltYWdlQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlQml0bWFwSW1hZ2VGb3JDbGllbnQoY29u
c3QgQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkKIHsKLSAgICBBU1NFUlQocmVuZGVyZXIp
OworICAgIEFTU0VSVChjbGllbnQpOwogCi0gICAgLy8gVGhlIGNhY2hlIG5lZWRzIHRvIGtub3cg
dGhlIHNpemUgb2YgdGhlIHJlbmRlcmVyIGJlZm9yZSBxdWVyeWluZyBhbiBpbWFnZSBmb3IgaXQu
Ci0gICAgU2l6ZUFuZFNjYWxlc01hcDo6aXRlcmF0b3Igc2l6ZUl0ID0gbV9zaXplQW5kU2NhbGVz
TWFwLmZpbmQocmVuZGVyZXIpOworICAgIC8vIFRoZSBjYWNoZSBuZWVkcyB0byBrbm93IHRoZSBz
aXplIG9mIHRoZSBjbGllbnQgYmVmb3JlIHF1ZXJ5aW5nIGFuIGltYWdlIGZvciBpdC4KKyAgICBT
aXplQW5kU2NhbGVzTWFwOjppdGVyYXRvciBzaXplSXQgPSBtX3NpemVBbmRTY2FsZXNNYXAuZmlu
ZChjbGllbnQpOwogICAgIGlmIChzaXplSXQgPT0gbV9zaXplQW5kU2NhbGVzTWFwLmVuZCgpKQog
ICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOwogCkBAIC0xMzYsOCArMTM2LDggQEAg
SW1hZ2UqIFNWR0ltYWdlQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlQml0bQogICAgIGZsb2F0IHNjYWxl
ID0gc2l6ZUl0LT5zZWNvbmQuc2NhbGU7CiAgICAgQVNTRVJUKCFzaXplLmlzRW1wdHkoKSk7CiAK
LSAgICAvLyBMb29rdXAgaW1hZ2UgZm9yIHJlbmRlcmVyIGluIGNhY2hlIGFuZCBldmVudHVhbGx5
IHVwZGF0ZSBpdC4KLSAgICBJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZURhdGFN
YXAuZmluZChyZW5kZXJlcik7CisgICAgLy8gTG9va3VwIGltYWdlIGZvciBjbGllbnQgaW4gY2Fj
aGUgYW5kIGV2ZW50dWFsbHkgdXBkYXRlIGl0LgorICAgIEltYWdlRGF0YU1hcDo6aXRlcmF0b3Ig
aXQgPSBtX2ltYWdlRGF0YU1hcC5maW5kKGNsaWVudCk7CiAgICAgaWYgKGl0ICE9IG1faW1hZ2VE
YXRhTWFwLmVuZCgpKSB7CiAgICAgICAgIEltYWdlRGF0YSYgZGF0YSA9IGl0LT5zZWNvbmQ7CiAK
QEAgLTE0NSw3ICsxNDUsNyBAQCBJbWFnZSogU1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVhdGVC
aXRtCiAgICAgICAgIGlmIChkYXRhLnNpemVBbmRTY2FsZXMuc2l6ZSA9PSBzaXplICYmIGRhdGEu
c2l6ZUFuZFNjYWxlcy56b29tID09IHpvb20gJiYgZGF0YS5zaXplQW5kU2NhbGVzLnNjYWxlID09
IHNjYWxlKQogICAgICAgICAgICAgcmV0dXJuIGRhdGEuaW1hZ2UuZ2V0KCk7CiAKLSAgICAgICAg
Ly8gSWYgdGhlIGltYWdlIHNpemUgZm9yIHRoZSByZW5kZXJlciBjaGFuZ2VkLCB3ZSBoYXZlIHRv
IGRlbGV0ZSB0aGUgYnVmZmVyLCByZW1vdmUgdGhlIGl0ZW0gZnJvbSB0aGUgY2FjaGUgYW5kIHJl
Y3JlYXRlIGl0LgorICAgICAgICAvLyBJZiB0aGUgaW1hZ2Ugc2l6ZSBmb3IgdGhlIGNsaWVudCBj
aGFuZ2VkLCB3ZSBoYXZlIHRvIGRlbGV0ZSB0aGUgYnVmZmVyLCByZW1vdmUgdGhlIGl0ZW0gZnJv
bSB0aGUgY2FjaGUgYW5kIHJlY3JlYXRlIGl0LgogICAgICAgICBkZWxldGUgZGF0YS5idWZmZXI7
CiAgICAgICAgIG1faW1hZ2VEYXRhTWFwLnJlbW92ZShpdCk7CiAgICAgfQpAQCAtMTY0LDcgKzE2
NCw3IEBAIEltYWdlKiBTVkdJbWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUJpdG0KICAgICBJbWFn
ZSogbmV3SW1hZ2VQdHIgPSBuZXdJbWFnZS5nZXQoKTsKICAgICBBU1NFUlQobmV3SW1hZ2VQdHIp
OwogCi0gICAgbV9pbWFnZURhdGFNYXAuYWRkKHJlbmRlcmVyLCBJbWFnZURhdGEobmV3QnVmZmVy
LmxlYWtQdHIoKSwgbmV3SW1hZ2UucmVsZWFzZSgpLCBzaXplSXQtPnNlY29uZCkpOworICAgIG1f
aW1hZ2VEYXRhTWFwLmFkZChjbGllbnQsIEltYWdlRGF0YShuZXdCdWZmZXIubGVha1B0cigpLCBu
ZXdJbWFnZS5yZWxlYXNlKCksIHNpemVJdC0+c2Vjb25kKSk7CiAgICAgcmV0dXJuIG5ld0ltYWdl
UHRyOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNo
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNh
Y2hlLmgJKHJldmlzaW9uIDExODg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkSW1hZ2U7CitjbGFzcyBDYWNoZWRSZXNvdXJjZUNs
aWVudDsKIGNsYXNzIEltYWdlQnVmZmVyOwotY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgU1ZH
SW1hZ2U7CiAKIGNsYXNzIFNWR0ltYWdlQ2FjaGUgewpAQCAtNjMsMTIgKzYzLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgZmxvYXQgc2NhbGU7CiAgICAgfTsKIAotICAgIHZvaWQgcmVtb3ZlUmVuZGVy
ZXJGcm9tQ2FjaGUoY29uc3QgUmVuZGVyT2JqZWN0Kik7CisgICAgdm9pZCByZW1vdmVDbGllbnRG
cm9tQ2FjaGUoY29uc3QgQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKIAotICAgIHZvaWQgc2V0UmVx
dWVzdGVkU2l6ZUFuZFNjYWxlcyhjb25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBTaXplQW5kU2Nh
bGVzJik7Ci0gICAgU2l6ZUFuZFNjYWxlcyByZXF1ZXN0ZWRTaXplQW5kU2NhbGVzKGNvbnN0IFJl
bmRlck9iamVjdCopIGNvbnN0OworICAgIHZvaWQgc2V0UmVxdWVzdGVkU2l6ZUFuZFNjYWxlcyhj
b25zdCBDYWNoZWRSZXNvdXJjZUNsaWVudCosIGNvbnN0IFNpemVBbmRTY2FsZXMmKTsKKyAgICBT
aXplQW5kU2NhbGVzIHJlcXVlc3RlZFNpemVBbmRTY2FsZXMoY29uc3QgQ2FjaGVkUmVzb3VyY2VD
bGllbnQqKSBjb25zdDsKIAotICAgIEltYWdlKiBsb29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7CisgICAgSW1hZ2UqIGxvb2t1cE9yQ3JlYXRl
Qml0bWFwSW1hZ2VGb3JDbGllbnQoY29uc3QgQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKICAgICB2
b2lkIGltYWdlQ29udGVudENoYW5nZWQoKTsKIAogcHJpdmF0ZToKQEAgLTk4LDggKzk4LDggQEAg
cHJpdmF0ZToKICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICAgICB9OwogCi0gICAgdHlw
ZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVjdCosIFNpemVBbmRTY2FsZXM+IFNpemVBbmRT
Y2FsZXNNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVjdCosIEltYWdl
RGF0YT4gSW1hZ2VEYXRhTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDYWNoZWRSZXNv
dXJjZUNsaWVudCosIFNpemVBbmRTY2FsZXM+IFNpemVBbmRTY2FsZXNNYXA7CisgICAgdHlwZWRl
ZiBIYXNoTWFwPGNvbnN0IENhY2hlZFJlc291cmNlQ2xpZW50KiwgSW1hZ2VEYXRhPiBJbWFnZURh
dGFNYXA7CiAKICAgICBTVkdJbWFnZSogbV9zdmdJbWFnZTsKICAgICBTaXplQW5kU2NhbGVzTWFw
IG1fc2l6ZUFuZFNjYWxlc01hcDsK
</data>
<flag name="commit-queue"
          id="151569"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144923</attachid>
            <date>2012-05-30 14:29:43 -0700</date>
            <delta_ts>2012-06-01 10:04:28 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>87792-alta</filename>
            <type>text/plain</type>
            <size>12214</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExODg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA1LTI5ICBYaWFuemh1
IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU1ZHSW1hZ2VDYWNo
ZSBsZWFrcyBpbWFnZSBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04Nzc5MgorCisgICAgICAgIFRoZXJlIGFyZSB0d28gZnVuY3Rpb25zIHRvIHJl
bW92ZSBhIGNsaWVudCBmcm9tIGEgQ2FjaGVkSW1hZ2U6CisgICAgICAgIC0gQ2FjaGVkUmVzb3Vy
Y2U6OnJlbW92ZUNsaWVudCgpCisgICAgICAgIC0gQ2FjaGVkSW1hZ2U6OnJlbW92ZUNsaWVudEZv
clJlbmRlcmVyKCkuCisgICAgICAgIEl0J3MgZWFzeSB0byBtYWtlIGVycm9yIHRvIGNhbGwgdGhl
IGZvcm1lciB3aGljaCB3aWxsIGxlYWsgdGhlIGNhY2hlZAorICAgICAgICBpbWFnZSBidWZmZXJz
IGluIFNWR0ltYWdlQ2FjaGUuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgY29tYmluZWQgdGhlIHR3
byBieSBhZGRpbmcgdGhlIHZpcnR1YWwgCisgICAgICAgIENhY2hlZFJlc291cmNlOjpkaWRSZW1v
dmVDbGllbnQoKS4gQ2FjaGVkSW1hZ2Ugd2lsbCBkbyBTVkdJbWFnZUNhY2hlCisgICAgICAgIGNs
ZWFudXAgaW4gdGhlIGZ1bmN0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gT3BlbiBodHRwOi8vcGV0ZWxlcGFnZS5jb20v
c2NyYXRjaC9icmVlbDIvCisgICAgICAgIHRvIHNlZSBpZiB0aGVyZSBpcyBtZW1vcnkgbGVhay4K
KworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpkaWRSZW1vdmVDbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Omxvb2t1cE9yQ3JlYXRlSW1hZ2VGb3JSZW5k
ZXJlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgIChD
YWNoZWRJbWFnZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpkaWRSZW1vdmVDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVtb3Zl
Q2xpZW50KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAg
ICAgKENhY2hlZFJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNo
ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlOjpyZW1vdmVD
bGllbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OnJlbW92ZUNsaWVudCk6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VDYWNoZTo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlQ2FjaGU6OnNldFJlcXVlc3RlZFNpemVBbmRTY2FsZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6cmVxdWVzdGVkU2l6ZUFuZFNjYWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9y
Q2xpZW50KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdJbWFnZUNhY2hlKToKKwogMjAxMi0wNS0yOSAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFNv
bWUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY29uc29sZSBtZXNzYWdlcyBhcmUgbWlzc2luZyBs
aW5lIG51bWJlcnMgaW4gSlNDCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDExODg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDE1ICs5Miw2IEBA
IHZvaWQgQ2FjaGVkSW1hZ2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2EKICAgICAgICAgc2V0TG9h
ZGluZyhmYWxzZSk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnJlbW92ZUNsaWVudEZvclJlbmRl
cmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCi17Ci0jaWYgRU5BQkxFKFNWRykKLSAgICBpZiAo
bV9zdmdJbWFnZUNhY2hlKQotICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUtPnJlbW92ZVJlbmRlcmVy
RnJvbUNhY2hlKHJlbmRlcmVyKTsKLSNlbmRpZgotICAgIHJlbW92ZUNsaWVudChyZW5kZXJlcik7
Ci19Ci0KIHZvaWQgQ2FjaGVkSW1hZ2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVu
dCogYykKIHsKICAgICBpZiAobV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIuaXNBY3RpdmUoKSkK
QEAgLTExOCw2ICsxMDksMTYgQEAgdm9pZCBDYWNoZWRJbWFnZTo6ZGlkQWRkQ2xpZW50KENhY2hl
ZFJlcwogICAgIENhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQoYyk7CiB9CiAKK3ZvaWQgQ2Fj
aGVkSW1hZ2U6OmRpZFJlbW92ZUNsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKK3sKKyNp
ZiBFTkFCTEUoU1ZHKQorICAgIGlmIChtX3N2Z0ltYWdlQ2FjaGUpCisgICAgICAgIG1fc3ZnSW1h
Z2VDYWNoZS0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKGMpOworI2VuZGlmCisKKyAgICBDYWNoZWRS
ZXNvdXJjZTo6ZGlkUmVtb3ZlQ2xpZW50KGMpOworfQorCiB2b2lkIENhY2hlZEltYWdlOjphbGxD
bGllbnRzUmVtb3ZlZCgpCiB7CiAgICAgaWYgKG1faW1hZ2UgJiYgIWVycm9yT2NjdXJyZWQoKSkK
QEAgLTE1MCw3ICsxNTEsNyBAQCBpbmxpbmUgSW1hZ2UqIENhY2hlZEltYWdlOjpsb29rdXBPckNy
ZWF0CiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghbV9pbWFnZS0+aXNTVkdJbWFnZSgpKQog
ICAgICAgICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKLSAgICBJbWFnZSogdXNlSW1hZ2UgPSBtX3N2
Z0ltYWdlQ2FjaGUtPmxvb2t1cE9yQ3JlYXRlQml0bWFwSW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJl
cik7CisgICAgSW1hZ2UqIHVzZUltYWdlID0gbV9zdmdJbWFnZUNhY2hlLT5sb29rdXBPckNyZWF0
ZUJpdG1hcEltYWdlRm9yQ2xpZW50KHJlbmRlcmVyKTsKICAgICBpZiAodXNlSW1hZ2UgPT0gSW1h
Z2U6Om51bGxJbWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKICAgICByZXR1
cm4gdXNlSW1hZ2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAkocmV2aXNpb24gMTE4ODU1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDkgKzY3LDkgQEAgcHVibGljOgogICAg
IEludFNpemUgaW1hZ2VTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgZmxvYXQg
bXVsdGlwbGllcik7IC8vIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIGNvbXBsZXRlIGltYWdlLgog
ICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0
aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pOwog
Ci0gICAgdm9pZCByZW1vdmVDbGllbnRGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QqKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7Ci0gICAgCisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZUNsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwor
CiAgICAgdmlydHVhbCB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRlc3Ryb3lEZWNvZGVkRGF0YSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDExODg1NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQzMiw2ICs0MzIsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpyZW1vdmVDbGllbnQoQ2FjaGVk
CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucyhjbGllbnQp
KTsKICAgICAgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOworICAgICAgICBkaWRSZW1vdmVD
bGllbnQoY2xpZW50KTsKICAgICB9CiAKICAgICBpZiAoY2FuRGVsZXRlKCkgJiYgIWluQ2FjaGUo
KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CShyZXZpc2lvbiAxMTg4NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIHB1YmxpYzoKICAg
ICBQcmVsb2FkUmVzdWx0IHByZWxvYWRSZXN1bHQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxQcmVsb2FkUmVzdWx0PihtX3ByZWxvYWRSZXN1bHQpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlbW92ZUNsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBhbGxDbGllbnRzUmVtb3ZlZCgpOwogCiAgICAgdW5zaWduZWQgY291bnQoKSBjb25zdCB7IHJl
dHVybiBtX2NsaWVudHMuc2l6ZSgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAxMTg4NTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBTdHlsZUNhY2hlZEltYWdlOjphZGRD
bGllbnQoUmVuZGVyTwogCiB2b2lkIFN0eWxlQ2FjaGVkSW1hZ2U6OnJlbW92ZUNsaWVudChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIG1faW1hZ2UtPnJlbW92ZUNsaWVudEZvclJlbmRl
cmVyKHJlbmRlcmVyKTsKKyAgICBtX2ltYWdlLT5yZW1vdmVDbGllbnQocmVuZGVyZXIpOwogfQog
CiBQYXNzUmVmUHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdlOjppbWFnZShSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAJKHJldmlz
aW9uIDExODg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hl
ZEltYWdlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgU3R5
bGVDYWNoZWRJbWFnZVNldDo6YWRkQ2xpZW50KFJlbmQKIAogdm9pZCBTdHlsZUNhY2hlZEltYWdl
U2V0OjpyZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKLSAgICBtX2Jlc3RG
aXRJbWFnZS0+cmVtb3ZlQ2xpZW50Rm9yUmVuZGVyZXIocmVuZGVyZXIpOworICAgIG1fYmVzdEZp
dEltYWdlLT5yZW1vdmVDbGllbnQocmVuZGVyZXIpOwogfQogCiBQYXNzUmVmUHRyPEltYWdlPiBT
dHlsZUNhY2hlZEltYWdlU2V0OjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJ
bnRTaXplJikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VDYWNoZS5jcHAJKHJldmlzaW9uIDExODg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTIgKzQ3LDEy
IEBAIFNWR0ltYWdlQ2FjaGU6On5TVkdJbWFnZUNhY2hlKCkKICAgICBtX2ltYWdlRGF0YU1hcC5j
bGVhcigpOwogfQogCi12b2lkIFNWR0ltYWdlQ2FjaGU6OnJlbW92ZVJlbmRlcmVyRnJvbUNhY2hl
KGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit2b2lkIFNWR0ltYWdlQ2FjaGU6OnJlbW92
ZUNsaWVudEZyb21DYWNoZShjb25zdCBDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogewot
ICAgIEFTU0VSVChyZW5kZXJlcik7Ci0gICAgbV9zaXplQW5kU2NhbGVzTWFwLnJlbW92ZShyZW5k
ZXJlcik7CisgICAgQVNTRVJUKGNsaWVudCk7CisgICAgbV9zaXplQW5kU2NhbGVzTWFwLnJlbW92
ZShjbGllbnQpOwogCi0gICAgSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBpdCA9IG1faW1hZ2VEYXRh
TWFwLmZpbmQocmVuZGVyZXIpOworICAgIEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBtX2lt
YWdlRGF0YU1hcC5maW5kKGNsaWVudCk7CiAgICAgaWYgKGl0ID09IG1faW1hZ2VEYXRhTWFwLmVu
ZCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTYwLDE3ICs2MCwxNyBAQCB2b2lkIFNWR0ltYWdl
Q2FjaGU6OnJlbW92ZVJlbmRlcmVyRnJvbUNhCiAgICAgbV9pbWFnZURhdGFNYXAucmVtb3ZlKGl0
KTsKIH0KIAotdm9pZCBTVkdJbWFnZUNhY2hlOjpzZXRSZXF1ZXN0ZWRTaXplQW5kU2NhbGVzKGNv
bnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFNpemVBbmRTY2FsZXMmIHNpemVBbmRT
Y2FsZXMpCit2b2lkIFNWR0ltYWdlQ2FjaGU6OnNldFJlcXVlc3RlZFNpemVBbmRTY2FsZXMoY29u
c3QgQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCwgY29uc3QgU2l6ZUFuZFNjYWxlcyYgc2l6
ZUFuZFNjYWxlcykKIHsKLSAgICBBU1NFUlQocmVuZGVyZXIpOworICAgIEFTU0VSVChjbGllbnQp
OwogICAgIEFTU0VSVCghc2l6ZUFuZFNjYWxlcy5zaXplLmlzRW1wdHkoKSk7Ci0gICAgbV9zaXpl
QW5kU2NhbGVzTWFwLnNldChyZW5kZXJlciwgc2l6ZUFuZFNjYWxlcyk7CisgICAgbV9zaXplQW5k
U2NhbGVzTWFwLnNldChjbGllbnQsIHNpemVBbmRTY2FsZXMpOwogfQogCi1TVkdJbWFnZUNhY2hl
OjpTaXplQW5kU2NhbGVzIFNWR0ltYWdlQ2FjaGU6OnJlcXVlc3RlZFNpemVBbmRTY2FsZXMoY29u
c3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK1NWR0ltYWdlQ2FjaGU6OlNpemVBbmRT
Y2FsZXMgU1ZHSW1hZ2VDYWNoZTo6cmVxdWVzdGVkU2l6ZUFuZFNjYWxlcyhjb25zdCBDYWNoZWRS
ZXNvdXJjZUNsaWVudCogY2xpZW50KSBjb25zdAogewotICAgIEFTU0VSVChyZW5kZXJlcik7Ci0g
ICAgU2l6ZUFuZFNjYWxlc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3NpemVBbmRTY2FsZXNN
YXAuZmluZChyZW5kZXJlcik7CisgICAgQVNTRVJUKGNsaWVudCk7CisgICAgU2l6ZUFuZFNjYWxl
c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3NpemVBbmRTY2FsZXNNYXAuZmluZChjbGllbnQp
OwogICAgIGlmIChpdCA9PSBtX3NpemVBbmRTY2FsZXNNYXAuZW5kKCkpCiAgICAgICAgIHJldHVy
biBTaXplQW5kU2NhbGVzKCk7CiAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CkBAIC0xMjIsMTIgKzEy
MiwxMiBAQCB2b2lkIFNWR0ltYWdlQ2FjaGU6OnJlZHJhd1RpbWVyRmlyZWQoVGltCiAgICAgICAg
cmVkcmF3KCk7CiB9CiAKLUltYWdlKiBTVkdJbWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUJpdG1h
cEltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK0ltYWdlKiBT
VkdJbWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9yQ2xpZW50KGNvbnN0IENh
Y2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgQVNTRVJUKHJlbmRlcmVyKTsKKyAg
ICBBU1NFUlQoY2xpZW50KTsKIAotICAgIC8vIFRoZSBjYWNoZSBuZWVkcyB0byBrbm93IHRoZSBz
aXplIG9mIHRoZSByZW5kZXJlciBiZWZvcmUgcXVlcnlpbmcgYW4gaW1hZ2UgZm9yIGl0LgotICAg
IFNpemVBbmRTY2FsZXNNYXA6Oml0ZXJhdG9yIHNpemVJdCA9IG1fc2l6ZUFuZFNjYWxlc01hcC5m
aW5kKHJlbmRlcmVyKTsKKyAgICAvLyBUaGUgY2FjaGUgbmVlZHMgdG8ga25vdyB0aGUgc2l6ZSBv
ZiB0aGUgY2xpZW50IGJlZm9yZSBxdWVyeWluZyBhbiBpbWFnZSBmb3IgaXQuCisgICAgU2l6ZUFu
ZFNjYWxlc01hcDo6aXRlcmF0b3Igc2l6ZUl0ID0gbV9zaXplQW5kU2NhbGVzTWFwLmZpbmQoY2xp
ZW50KTsKICAgICBpZiAoc2l6ZUl0ID09IG1fc2l6ZUFuZFNjYWxlc01hcC5lbmQoKSkKICAgICAg
ICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKIApAQCAtMTM2LDggKzEzNiw4IEBAIEltYWdl
KiBTVkdJbWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUJpdG0KICAgICBmbG9hdCBzY2FsZSA9IHNp
emVJdC0+c2Vjb25kLnNjYWxlOwogICAgIEFTU0VSVCghc2l6ZS5pc0VtcHR5KCkpOwogCi0gICAg
Ly8gTG9va3VwIGltYWdlIGZvciByZW5kZXJlciBpbiBjYWNoZSBhbmQgZXZlbnR1YWxseSB1cGRh
dGUgaXQuCi0gICAgSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBpdCA9IG1faW1hZ2VEYXRhTWFwLmZp
bmQocmVuZGVyZXIpOworICAgIC8vIExvb2t1cCBpbWFnZSBmb3IgY2xpZW50IGluIGNhY2hlIGFu
ZCBldmVudHVhbGx5IHVwZGF0ZSBpdC4KKyAgICBJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9pbWFnZURhdGFNYXAuZmluZChjbGllbnQpOwogICAgIGlmIChpdCAhPSBtX2ltYWdlRGF0YU1h
cC5lbmQoKSkgewogICAgICAgICBJbWFnZURhdGEmIGRhdGEgPSBpdC0+c2Vjb25kOwogCkBAIC0x
NDUsNyArMTQ1LDcgQEAgSW1hZ2UqIFNWR0ltYWdlQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlQml0bQog
ICAgICAgICBpZiAoZGF0YS5zaXplQW5kU2NhbGVzLnNpemUgPT0gc2l6ZSAmJiBkYXRhLnNpemVB
bmRTY2FsZXMuem9vbSA9PSB6b29tICYmIGRhdGEuc2l6ZUFuZFNjYWxlcy5zY2FsZSA9PSBzY2Fs
ZSkKICAgICAgICAgICAgIHJldHVybiBkYXRhLmltYWdlLmdldCgpOwogCi0gICAgICAgIC8vIElm
IHRoZSBpbWFnZSBzaXplIGZvciB0aGUgcmVuZGVyZXIgY2hhbmdlZCwgd2UgaGF2ZSB0byBkZWxl
dGUgdGhlIGJ1ZmZlciwgcmVtb3ZlIHRoZSBpdGVtIGZyb20gdGhlIGNhY2hlIGFuZCByZWNyZWF0
ZSBpdC4KKyAgICAgICAgLy8gSWYgdGhlIGltYWdlIHNpemUgZm9yIHRoZSBjbGllbnQgY2hhbmdl
ZCwgd2UgaGF2ZSB0byBkZWxldGUgdGhlIGJ1ZmZlciwgcmVtb3ZlIHRoZSBpdGVtIGZyb20gdGhl
IGNhY2hlIGFuZCByZWNyZWF0ZSBpdC4KICAgICAgICAgZGVsZXRlIGRhdGEuYnVmZmVyOwogICAg
ICAgICBtX2ltYWdlRGF0YU1hcC5yZW1vdmUoaXQpOwogICAgIH0KQEAgLTE2NCw3ICsxNjQsNyBA
QCBJbWFnZSogU1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVhdGVCaXRtCiAgICAgSW1hZ2UqIG5l
d0ltYWdlUHRyID0gbmV3SW1hZ2UuZ2V0KCk7CiAgICAgQVNTRVJUKG5ld0ltYWdlUHRyKTsKIAot
ICAgIG1faW1hZ2VEYXRhTWFwLmFkZChyZW5kZXJlciwgSW1hZ2VEYXRhKG5ld0J1ZmZlci5sZWFr
UHRyKCksIG5ld0ltYWdlLnJlbGVhc2UoKSwgc2l6ZUl0LT5zZWNvbmQpKTsKKyAgICBtX2ltYWdl
RGF0YU1hcC5hZGQoY2xpZW50LCBJbWFnZURhdGEobmV3QnVmZmVyLmxlYWtQdHIoKSwgbmV3SW1h
Z2UucmVsZWFzZSgpLCBzaXplSXQtPnNlY29uZCkpOwogICAgIHJldHVybiBuZXdJbWFnZVB0cjsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5o
CShyZXZpc2lvbiAxMTg4NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENhY2hlZEltYWdlOworY2xhc3MgQ2FjaGVkUmVzb3VyY2VDbGllbnQ7
CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKLWNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNWR0ltYWdl
OwogCiBjbGFzcyBTVkdJbWFnZUNhY2hlIHsKQEAgLTYzLDEyICs2MywxMiBAQCBwdWJsaWM6CiAg
ICAgICAgIGZsb2F0IHNjYWxlOwogICAgIH07CiAKLSAgICB2b2lkIHJlbW92ZVJlbmRlcmVyRnJv
bUNhY2hlKGNvbnN0IFJlbmRlck9iamVjdCopOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50RnJvbUNh
Y2hlKGNvbnN0IENhY2hlZFJlc291cmNlQ2xpZW50Kik7CiAKLSAgICB2b2lkIHNldFJlcXVlc3Rl
ZFNpemVBbmRTY2FsZXMoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgU2l6ZUFuZFNjYWxlcyYp
OwotICAgIFNpemVBbmRTY2FsZXMgcmVxdWVzdGVkU2l6ZUFuZFNjYWxlcyhjb25zdCBSZW5kZXJP
YmplY3QqKSBjb25zdDsKKyAgICB2b2lkIHNldFJlcXVlc3RlZFNpemVBbmRTY2FsZXMoY29uc3Qg
Q2FjaGVkUmVzb3VyY2VDbGllbnQqLCBjb25zdCBTaXplQW5kU2NhbGVzJik7CisgICAgU2l6ZUFu
ZFNjYWxlcyByZXF1ZXN0ZWRTaXplQW5kU2NhbGVzKGNvbnN0IENhY2hlZFJlc291cmNlQ2xpZW50
KikgY29uc3Q7CiAKLSAgICBJbWFnZSogbG9va3VwT3JDcmVhdGVCaXRtYXBJbWFnZUZvclJlbmRl
cmVyKGNvbnN0IFJlbmRlck9iamVjdCopOworICAgIEltYWdlKiBsb29rdXBPckNyZWF0ZUJpdG1h
cEltYWdlRm9yQ2xpZW50KGNvbnN0IENhY2hlZFJlc291cmNlQ2xpZW50Kik7CiAgICAgdm9pZCBp
bWFnZUNvbnRlbnRDaGFuZ2VkKCk7CiAKIHByaXZhdGU6CkBAIC05OCw4ICs5OCw4IEBAIHByaXZh
dGU6CiAgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAgICAgfTsKIAotICAgIHR5cGVkZWYg
SGFzaE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBTaXplQW5kU2NhbGVzPiBTaXplQW5kU2NhbGVz
TWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBJbWFnZURhdGE+
IEltYWdlRGF0YU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ2FjaGVkUmVzb3VyY2VD
bGllbnQqLCBTaXplQW5kU2NhbGVzPiBTaXplQW5kU2NhbGVzTWFwOworICAgIHR5cGVkZWYgSGFz
aE1hcDxjb25zdCBDYWNoZWRSZXNvdXJjZUNsaWVudCosIEltYWdlRGF0YT4gSW1hZ2VEYXRhTWFw
OwogCiAgICAgU1ZHSW1hZ2UqIG1fc3ZnSW1hZ2U7CiAgICAgU2l6ZUFuZFNjYWxlc01hcCBtX3Np
emVBbmRTY2FsZXNNYXA7Cg==
</data>
<flag name="review"
          id="151923"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145334</attachid>
            <date>2012-06-01 10:04:28 -0700</date>
            <delta_ts>2012-06-11 11:23:17 -0700</delta_ts>
            <desc>patch (with test)</desc>
            <filename>87792c</filename>
            <type>text/plain</type>
            <size>21162</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExOTI0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA2LTAxICBYaWFuemh1
IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU1ZHSW1hZ2VDYWNo
ZSBsZWFrcyBpbWFnZSBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04Nzc5MgorCisgICAgICAgIFRoZXJlIGFyZSB0d28gZnVuY3Rpb25zIHRvIHJl
bW92ZSBhIGNsaWVudCBmcm9tIGEgQ2FjaGVkSW1hZ2U6CisgICAgICAgIC0gQ2FjaGVkUmVzb3Vy
Y2U6OnJlbW92ZUNsaWVudCgpCisgICAgICAgIC0gQ2FjaGVkSW1hZ2U6OnJlbW92ZUNsaWVudEZv
clJlbmRlcmVyKCkuCisgICAgICAgIEl0J3MgZWFzeSB0byBtYWtlIGVycm9yIHRvIGNhbGwgdGhl
IGZvcm1lciB3aGljaCB3aWxsIGxlYWsgdGhlIGNhY2hlZAorICAgICAgICBpbWFnZSBidWZmZXJz
IGluIFNWR0ltYWdlQ2FjaGUuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgY29tYmluZWQgdGhlIHR3
byBieSBhZGRpbmcgdGhlIHZpcnR1YWwgCisgICAgICAgIENhY2hlZFJlc291cmNlOjpkaWRSZW1v
dmVDbGllbnQoKS4gQ2FjaGVkSW1hZ2Ugd2lsbCBkbyBTVkdJbWFnZUNhY2hlCisgICAgICAgIGNs
ZWFudXAgaW4gdGhlIGZ1bmN0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3Q6IHN2Zy9hcy1pbWFnZS9zdmctaW1hZ2UtbGVhay1jYWNoZWQt
ZGF0YS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udENsaWVudDo6cmVzb3VyY2VDbGllbnRUeXBlKTogQWRkZWQg
J2NvbnN0Jy4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZGlkUmVtb3ZlQ2xp
ZW50KTogUmVtb3ZlcyB0aGUgY2xpZW50IGZyb20gU1ZHSW1hZ2VDYWNoZS4KKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjpsb29rdXBPckNyZWF0ZUltYWdlRm9yUmVuZGVyZXIpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAoQ2FjaGVkSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2VDbGllbnQ6OnJlc291cmNlQ2xpZW50VHlw
ZSk6IEFkZGVkICdjb25zdCcuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZUNsaWVudDo6cmVzb3Vy
Y2VDbGllbnRUeXBlKTogQWRkZWQgJ2NvbnN0Jy4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlbW92
ZUNsaWVudCk6IEFkZGVkIGludm9jYXRpb24gb2YgZGlkUmVtb3ZlQ2xpZW50KCkuCisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6ZGlkUmVtb3ZlQ2xpZW50KTogQWRkZWQgZm9yIHN1YmNsYXNzZXMgdG8gZG8g
YWRkaXRpb25hbCB3b3Jrcy4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VD
bGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlQ2xpZW50OjpyZXNvdXJj
ZUNsaWVudFR5cGUpOiBBZGRlZCAnY29uc3QnLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRDbGll
bnQ6OnJlc291cmNlQ2xpZW50VHlwZSk6IEFkZGVkICdjb25zdCcuCisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFN0eWxlU2hlZXRDbGllbnQ6OnJlc291cmNlQ2xpZW50VHlwZSk6IEFkZGVkICdjb25zdCcuCisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVDYWNoZWRJbWFnZTo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUNhY2hlZEltYWdlU2V0OjpyZW1vdmVDbGllbnQpOgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9TVkdJbWFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6On5T
VkdJbWFnZUNhY2hlKTogQWRkZWQgY2hlY2tpbmcgZm9yIGxlYWtzLgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VDYWNoZTo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ltYWdlQ2FjaGU6OnNldFJlcXVlc3RlZFNpemVBbmRTY2FsZXMpOiAKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6OnJlcXVlc3RlZFNpemVBbmRTY2FsZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVhdGVCaXRtYXBJbWFnZUZvckNs
aWVudCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoU1ZHSW1hZ2VDYWNoZSk6CisKIDIwMTItMDYtMDEgIENocmlz
dG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZM
XSBFRkwgcG9ydCBkb2VzIG5vdCBlbmFibGUgV0VCX0lOVEVOVFNfVEFHIGZsYWcKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAkocmV2aXNpb24gMTE5MjQxKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtODUsNyArODUsNyBAQCBjbGFzcyBDYWNoZWRGb250Q2xpZW50IDogcHVibGljIENhY2hl
ZFJlCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FjaGVkRm9udENsaWVudCgpIHsgfQogICAgIHN0
YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gRm9u
dFR5cGU7IH0KLSAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNs
aWVudFR5cGUoKSB7IHJldHVybiBleHBlY3RlZFR5cGUoKTsgfQorICAgIHZpcnR1YWwgQ2FjaGVk
UmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGV4
cGVjdGVkVHlwZSgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGZvbnRMb2FkZWQoQ2FjaGVkRm9udCop
IHsgfQogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCShyZXZpc2lvbiAxMTkyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxNSArOTIsNiBAQCB2b2lkIENh
Y2hlZEltYWdlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hCiAgICAgICAgIHNldExvYWRpbmcoZmFs
c2UpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpyZW1vdmVDbGllbnRGb3JSZW5kZXJlcihSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQotewotI2lmIEVOQUJMRShTVkcpCi0gICAgaWYgKG1fc3ZnSW1h
Z2VDYWNoZSkKLSAgICAgICAgbV9zdmdJbWFnZUNhY2hlLT5yZW1vdmVSZW5kZXJlckZyb21DYWNo
ZShyZW5kZXJlcik7Ci0jZW5kaWYKLSAgICByZW1vdmVDbGllbnQocmVuZGVyZXIpOwotfQotCiB2
b2lkIENhY2hlZEltYWdlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCiB7
CiAgICAgaWYgKG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyLmlzQWN0aXZlKCkpCkBAIC0xMTgs
NiArMTA5LDE3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXMKICAg
ICBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KGMpOwogfQogCit2b2lkIENhY2hlZEltYWdl
OjpkaWRSZW1vdmVDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCit7CisgICAgQVNTRVJU
KGMtPnJlc291cmNlQ2xpZW50VHlwZSgpID09IENhY2hlZEltYWdlQ2xpZW50OjpleHBlY3RlZFR5
cGUoKSk7CisjaWYgRU5BQkxFKFNWRykKKyAgICBpZiAobV9zdmdJbWFnZUNhY2hlKQorICAgICAg
ICBtX3N2Z0ltYWdlQ2FjaGUtPnJlbW92ZUNsaWVudEZyb21DYWNoZShzdGF0aWNfY2FzdDxDYWNo
ZWRJbWFnZUNsaWVudCo+KGMpKTsKKyNlbmRpZgorCisgICAgQ2FjaGVkUmVzb3VyY2U6OmRpZFJl
bW92ZUNsaWVudChjKTsKK30KKwogdm9pZCBDYWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQo
KQogewogICAgIGlmIChtX2ltYWdlICYmICFlcnJvck9jY3VycmVkKCkpCkBAIC0xNTAsNyArMTUy
LDcgQEAgaW5saW5lIEltYWdlKiBDYWNoZWRJbWFnZTo6bG9va3VwT3JDcmVhdAogICAgICAgICBy
ZXR1cm4gMDsKICAgICBpZiAoIW1faW1hZ2UtPmlzU1ZHSW1hZ2UoKSkKICAgICAgICAgcmV0dXJu
IG1faW1hZ2UuZ2V0KCk7Ci0gICAgSW1hZ2UqIHVzZUltYWdlID0gbV9zdmdJbWFnZUNhY2hlLT5s
b29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOworICAgIEltYWdl
KiB1c2VJbWFnZSA9IG1fc3ZnSW1hZ2VDYWNoZS0+bG9va3VwT3JDcmVhdGVCaXRtYXBJbWFnZUZv
ckNsaWVudChyZW5kZXJlcik7CiAgICAgaWYgKHVzZUltYWdlID09IEltYWdlOjpudWxsSW1hZ2Uo
KSkKICAgICAgICAgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7CiAgICAgcmV0dXJuIHVzZUltYWdlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHJldmlzaW9u
IDExOTI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Nyw5ICs2Nyw5IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIGltYWdl
U2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGZsb2F0IG11bHRpcGxpZXIpOyAv
LyByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBjb21wbGV0ZSBpbWFnZS4KICAgICB2b2lkIGNvbXB1
dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50
cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKTsKIAotICAgIHZvaWQgcmVt
b3ZlQ2xpZW50Rm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwotICAgIAorICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZW1vdmVDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKKwogICAgIHZpcnR1YWwg
dm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2Rl
ZERhdGEoKTsKIApAQCAtMTE4LDcgKzExOCw3IEBAIGNsYXNzIENhY2hlZEltYWdlQ2xpZW50IDog
cHVibGljIENhY2hlZFIKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRJbWFnZUNsaWVudCgp
IHsgfQogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgZXhwZWN0ZWRUeXBlKCkg
eyByZXR1cm4gSW1hZ2VUeXBlOyB9Ci0gICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUNsaWVudFR5
cGUgcmVzb3VyY2VDbGllbnRUeXBlKCkgeyByZXR1cm4gZXhwZWN0ZWRUeXBlKCk7IH0KKyAgICB2
aXJ0dWFsIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSBjb25z
dCB7IHJldHVybiBleHBlY3RlZFR5cGUoKTsgfQogCiAgICAgLy8gQ2FsbGVkIHdoZW5ldmVyIGEg
ZnJhbWUgb2YgYW4gaW1hZ2UgY2hhbmdlcywgZWl0aGVyIGJlY2F1c2Ugd2UgZ290IG1vcmUgZGF0
YSBmcm9tIHRoZSBuZXR3b3JrIG9yCiAgICAgLy8gYmVjYXVzZSB3ZSBhcmUgYW5pbWF0aW5nLiBJ
ZiBub3QgbnVsbCwgdGhlIEludFJlY3QgaXMgdGhlIGNoYW5nZWQgcmVjdCBvZiB0aGUgaW1hZ2Uu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuaAkocmV2aXNpb24gMTE5MjQxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3Mg
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgOiBwdWJsaWMgQwogcHVibGljOgogICAgIHZpcnR1YWwg
fkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50KCkgeyB9CiAgICAgc3RhdGljIENhY2hlZFJlc291cmNl
Q2xpZW50VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJldHVybiBSYXdSZXNvdXJjZVR5cGU7IH0KLSAg
ICB2aXJ0dWFsIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSB7
IHJldHVybiBleHBlY3RlZFR5cGUoKTsgfQorICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGll
bnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgp
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UqLCB1bnNpZ25l
ZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxC
eXRlc1RvQmVTZW50ICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24g
MTE5MjQxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMyLDYgKzQzMiw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnJlbW92ZUNsaWVudChDYWNoZWQKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV9jbGll
bnRzLmNvbnRhaW5zKGNsaWVudCkpOwogICAgICAgICBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7
CisgICAgICAgIGRpZFJlbW92ZUNsaWVudChjbGllbnQpOwogICAgIH0KIAogICAgIGlmIChjYW5E
ZWxldGUoKSAmJiAhaW5DYWNoZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgJKHJldmlzaW9uIDExOTI0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiAr
MTI2LDcgQEAgcHVibGljOgogICAgIFByZWxvYWRSZXN1bHQgcHJlbG9hZFJlc3VsdCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByZWxvYWRSZXN1bHQ+KG1fcHJlbG9hZFJlc3VsdCk7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCk7CiAKICAgICB1bnNpZ25l
ZCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50cy5zaXplKCk7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCShy
ZXZpc2lvbiAxMTkyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKENhY2hlZFJlc291cmNlKikgeyB9OwogICAg
IAogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgZXhwZWN0ZWRUeXBlKCkgeyBy
ZXR1cm4gQmFzZVJlc291cmNlVHlwZTsgfQotICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGll
bnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9Cisg
ICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgcmVzb3VyY2VDbGllbnRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gZXhwZWN0ZWRUeXBlKCk7IH0KIAogcHJvdGVjdGVkOgogICAgIENhY2hl
ZFJlc291cmNlQ2xpZW50KCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAkocmV2aXNpb24gMTE5MjQxKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUyLDcgKzUyLDcgQEAgY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQgOiBwdWJsaWMgQwog
cHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZFNWR0RvY3VtZW50Q2xpZW50KCkgeyB9CiAgICAg
c3RhdGljIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJldHVybiBT
VkdEb2N1bWVudFR5cGU7IH0KLSAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSBy
ZXNvdXJjZUNsaWVudFR5cGUoKSB7IHJldHVybiBleHBlY3RlZFR5cGUoKTsgfQorICAgIHZpcnR1
YWwgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgJKHJldmlzaW9u
IDExOTI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQ2FjaGVkU3R5
bGVTaGVldENsaWVudCA6IHB1YmxpYyBDYQogcHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZFN0
eWxlU2hlZXRDbGllbnQoKSB7IH0KICAgICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBl
IGV4cGVjdGVkVHlwZSgpIHsgcmV0dXJuIFN0eWxlU2hlZXRUeXBlOyB9Ci0gICAgdmlydHVhbCBD
YWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgcmVzb3VyY2VDbGllbnRUeXBlKCkgeyByZXR1cm4gZXhw
ZWN0ZWRUeXBlKCk7IH0KKyAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNv
dXJjZUNsaWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBleHBlY3RlZFR5cGUoKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgLyogaHJlZiAqLywgY29u
c3QgS1VSTCYgLyogYmFzZVVSTCAqLywgY29uc3QgU3RyaW5nJiAvKiBjaGFyc2V0ICovLCBjb25z
dCBDYWNoZWRDU1NTdHlsZVNoZWV0KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFhTTFN0eWxl
U2hlZXQoY29uc3QgU3RyaW5nJiAvKiBocmVmICovLCBjb25zdCBLVVJMJiAvKiBiYXNlVVJMICov
LCBjb25zdCBTdHJpbmcmIC8qIHNoZWV0ICovKSB7IH0KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lv
biAxMTkyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJ
bWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBTdHlsZUNhY2hl
ZEltYWdlOjphZGRDbGllbnQoUmVuZGVyTwogCiB2b2lkIFN0eWxlQ2FjaGVkSW1hZ2U6OnJlbW92
ZUNsaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIG1faW1hZ2UtPnJlbW92ZUNs
aWVudEZvclJlbmRlcmVyKHJlbmRlcmVyKTsKKyAgICBtX2ltYWdlLT5yZW1vdmVDbGllbnQocmVu
ZGVyZXIpOwogfQogCiBQYXNzUmVmUHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdlOjppbWFnZShS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJikgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNl
dC5jcHAJKHJldmlzaW9uIDExOTI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3
IEBAIHZvaWQgU3R5bGVDYWNoZWRJbWFnZVNldDo6YWRkQ2xpZW50KFJlbmQKIAogdm9pZCBTdHls
ZUNhY2hlZEltYWdlU2V0OjpyZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsK
LSAgICBtX2Jlc3RGaXRJbWFnZS0+cmVtb3ZlQ2xpZW50Rm9yUmVuZGVyZXIocmVuZGVyZXIpOwor
ICAgIG1fYmVzdEZpdEltYWdlLT5yZW1vdmVDbGllbnQocmVuZGVyZXIpOwogfQogCiBQYXNzUmVm
UHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdlU2V0OjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBjb25zdCBJbnRTaXplJikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAJKHJldmlzaW9uIDExOTI0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjEsNiArMjEsNyBAQAogI2luY2x1ZGUgIlNWR0ltYWdlQ2FjaGUuaCIKIAogI2lmIEVOQUJMRShT
VkcpCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgpAQCAt
NDEsMTggKzQyLDIzIEBAIFNWR0ltYWdlQ2FjaGU6On5TVkdJbWFnZUNhY2hlKCkKICAgICBtX3Np
emVBbmRTY2FsZXNNYXAuY2xlYXIoKTsKIAogICAgIEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgZW5k
ID0gbV9pbWFnZURhdGFNYXAuZW5kKCk7Ci0gICAgZm9yIChJbWFnZURhdGFNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9pbWFnZURhdGFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgIGZvciAo
SW1hZ2VEYXRhTWFwOjppdGVyYXRvciBpdCA9IG1faW1hZ2VEYXRhTWFwLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgICAgICAvLyBDaGVja3MgaWYgdGhlIGNsaWVudCAoaXQtPmZpcnN0
KSBpcyBzdGlsbCB2YWxpZC4gVGhlIGNsaWVudCBzaG91bGQgcmVtb3ZlIGl0c2VsZiBmcm9tIHRo
aXMKKyAgICAgICAgLy8gY2FjaGUgYmVmb3JlIGl0cyBlbmQgb2YgbGlmZSwgb3RoZXJ3aXNlIHRo
ZSBmb2xsb3dpbmcgQVNTRVJUIHdpbGwgY3Jhc2ggb24gcHVyZSB2aXJ0dWFsCisgICAgICAgIC8v
IGZ1bmN0aW9uIGNhbGwgb3IgYSBnZW5lcmFsIGNyYXNoLgorICAgICAgICBBU1NFUlQoaXQtPmZp
cnN0LT5yZXNvdXJjZUNsaWVudFR5cGUoKSA9PSBDYWNoZWRJbWFnZUNsaWVudDo6ZXhwZWN0ZWRU
eXBlKCkpOwogICAgICAgICBkZWxldGUgaXQtPnNlY29uZC5idWZmZXI7CisgICAgfQogCiAgICAg
bV9pbWFnZURhdGFNYXAuY2xlYXIoKTsKIH0KIAotdm9pZCBTVkdJbWFnZUNhY2hlOjpyZW1vdmVS
ZW5kZXJlckZyb21DYWNoZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQordm9pZCBTVkdJ
bWFnZUNhY2hlOjpyZW1vdmVDbGllbnRGcm9tQ2FjaGUoY29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQq
IGNsaWVudCkKIHsKLSAgICBBU1NFUlQocmVuZGVyZXIpOwotICAgIG1fc2l6ZUFuZFNjYWxlc01h
cC5yZW1vdmUocmVuZGVyZXIpOworICAgIEFTU0VSVChjbGllbnQpOworICAgIG1fc2l6ZUFuZFNj
YWxlc01hcC5yZW1vdmUoY2xpZW50KTsKIAotICAgIEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQg
PSBtX2ltYWdlRGF0YU1hcC5maW5kKHJlbmRlcmVyKTsKKyAgICBJbWFnZURhdGFNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9pbWFnZURhdGFNYXAuZmluZChjbGllbnQpOwogICAgIGlmIChpdCA9PSBtX2lt
YWdlRGF0YU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MCwxNyArNjYsMTcgQEAg
dm9pZCBTVkdJbWFnZUNhY2hlOjpyZW1vdmVSZW5kZXJlckZyb21DYQogICAgIG1faW1hZ2VEYXRh
TWFwLnJlbW92ZShpdCk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VDYWNoZTo6c2V0UmVxdWVzdGVkU2l6
ZUFuZFNjYWxlcyhjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBTaXplQW5kU2Nh
bGVzJiBzaXplQW5kU2NhbGVzKQordm9pZCBTVkdJbWFnZUNhY2hlOjpzZXRSZXF1ZXN0ZWRTaXpl
QW5kU2NhbGVzKGNvbnN0IENhY2hlZEltYWdlQ2xpZW50KiBjbGllbnQsIGNvbnN0IFNpemVBbmRT
Y2FsZXMmIHNpemVBbmRTY2FsZXMpCiB7Ci0gICAgQVNTRVJUKHJlbmRlcmVyKTsKKyAgICBBU1NF
UlQoY2xpZW50KTsKICAgICBBU1NFUlQoIXNpemVBbmRTY2FsZXMuc2l6ZS5pc0VtcHR5KCkpOwot
ICAgIG1fc2l6ZUFuZFNjYWxlc01hcC5zZXQocmVuZGVyZXIsIHNpemVBbmRTY2FsZXMpOworICAg
IG1fc2l6ZUFuZFNjYWxlc01hcC5zZXQoY2xpZW50LCBzaXplQW5kU2NhbGVzKTsKIH0KIAotU1ZH
SW1hZ2VDYWNoZTo6U2l6ZUFuZFNjYWxlcyBTVkdJbWFnZUNhY2hlOjpyZXF1ZXN0ZWRTaXplQW5k
U2NhbGVzKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0CitTVkdJbWFnZUNhY2hl
OjpTaXplQW5kU2NhbGVzIFNWR0ltYWdlQ2FjaGU6OnJlcXVlc3RlZFNpemVBbmRTY2FsZXMoY29u
c3QgQ2FjaGVkSW1hZ2VDbGllbnQqIGNsaWVudCkgY29uc3QKIHsKLSAgICBBU1NFUlQocmVuZGVy
ZXIpOwotICAgIFNpemVBbmRTY2FsZXNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zaXplQW5k
U2NhbGVzTWFwLmZpbmQocmVuZGVyZXIpOworICAgIEFTU0VSVChjbGllbnQpOworICAgIFNpemVB
bmRTY2FsZXNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zaXplQW5kU2NhbGVzTWFwLmZpbmQo
Y2xpZW50KTsKICAgICBpZiAoaXQgPT0gbV9zaXplQW5kU2NhbGVzTWFwLmVuZCgpKQogICAgICAg
ICByZXR1cm4gU2l6ZUFuZFNjYWxlcygpOwogICAgIHJldHVybiBpdC0+c2Vjb25kOwpAQCAtMTIy
LDEyICsxMjgsMTIgQEAgdm9pZCBTVkdJbWFnZUNhY2hlOjpyZWRyYXdUaW1lckZpcmVkKFRpbQog
ICAgICAgIHJlZHJhdygpOwogfQogCi1JbWFnZSogU1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVh
dGVCaXRtYXBJbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitJ
bWFnZSogU1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVhdGVCaXRtYXBJbWFnZUZvckNsaWVudChj
b25zdCBDYWNoZWRJbWFnZUNsaWVudCogY2xpZW50KQogewotICAgIEFTU0VSVChyZW5kZXJlcik7
CisgICAgQVNTRVJUKGNsaWVudCk7CiAKLSAgICAvLyBUaGUgY2FjaGUgbmVlZHMgdG8ga25vdyB0
aGUgc2l6ZSBvZiB0aGUgcmVuZGVyZXIgYmVmb3JlIHF1ZXJ5aW5nIGFuIGltYWdlIGZvciBpdC4K
LSAgICBTaXplQW5kU2NhbGVzTWFwOjppdGVyYXRvciBzaXplSXQgPSBtX3NpemVBbmRTY2FsZXNN
YXAuZmluZChyZW5kZXJlcik7CisgICAgLy8gVGhlIGNhY2hlIG5lZWRzIHRvIGtub3cgdGhlIHNp
emUgb2YgdGhlIGNsaWVudCBiZWZvcmUgcXVlcnlpbmcgYW4gaW1hZ2UgZm9yIGl0LgorICAgIFNp
emVBbmRTY2FsZXNNYXA6Oml0ZXJhdG9yIHNpemVJdCA9IG1fc2l6ZUFuZFNjYWxlc01hcC5maW5k
KGNsaWVudCk7CiAgICAgaWYgKHNpemVJdCA9PSBtX3NpemVBbmRTY2FsZXNNYXAuZW5kKCkpCiAg
ICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CiAKQEAgLTEzNiw4ICsxNDIsOCBAQCBJ
bWFnZSogU1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVhdGVCaXRtCiAgICAgZmxvYXQgc2NhbGUg
PSBzaXplSXQtPnNlY29uZC5zY2FsZTsKICAgICBBU1NFUlQoIXNpemUuaXNFbXB0eSgpKTsKIAot
ICAgIC8vIExvb2t1cCBpbWFnZSBmb3IgcmVuZGVyZXIgaW4gY2FjaGUgYW5kIGV2ZW50dWFsbHkg
dXBkYXRlIGl0LgotICAgIEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlRGF0YU1h
cC5maW5kKHJlbmRlcmVyKTsKKyAgICAvLyBMb29rdXAgaW1hZ2UgZm9yIGNsaWVudCBpbiBjYWNo
ZSBhbmQgZXZlbnR1YWxseSB1cGRhdGUgaXQuCisgICAgSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBp
dCA9IG1faW1hZ2VEYXRhTWFwLmZpbmQoY2xpZW50KTsKICAgICBpZiAoaXQgIT0gbV9pbWFnZURh
dGFNYXAuZW5kKCkpIHsKICAgICAgICAgSW1hZ2VEYXRhJiBkYXRhID0gaXQtPnNlY29uZDsKIApA
QCAtMTQ1LDcgKzE1MSw3IEBAIEltYWdlKiBTVkdJbWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUJp
dG0KICAgICAgICAgaWYgKGRhdGEuc2l6ZUFuZFNjYWxlcy5zaXplID09IHNpemUgJiYgZGF0YS5z
aXplQW5kU2NhbGVzLnpvb20gPT0gem9vbSAmJiBkYXRhLnNpemVBbmRTY2FsZXMuc2NhbGUgPT0g
c2NhbGUpCiAgICAgICAgICAgICByZXR1cm4gZGF0YS5pbWFnZS5nZXQoKTsKIAotICAgICAgICAv
LyBJZiB0aGUgaW1hZ2Ugc2l6ZSBmb3IgdGhlIHJlbmRlcmVyIGNoYW5nZWQsIHdlIGhhdmUgdG8g
ZGVsZXRlIHRoZSBidWZmZXIsIHJlbW92ZSB0aGUgaXRlbSBmcm9tIHRoZSBjYWNoZSBhbmQgcmVj
cmVhdGUgaXQuCisgICAgICAgIC8vIElmIHRoZSBpbWFnZSBzaXplIGZvciB0aGUgY2xpZW50IGNo
YW5nZWQsIHdlIGhhdmUgdG8gZGVsZXRlIHRoZSBidWZmZXIsIHJlbW92ZSB0aGUgaXRlbSBmcm9t
IHRoZSBjYWNoZSBhbmQgcmVjcmVhdGUgaXQuCiAgICAgICAgIGRlbGV0ZSBkYXRhLmJ1ZmZlcjsK
ICAgICAgICAgbV9pbWFnZURhdGFNYXAucmVtb3ZlKGl0KTsKICAgICB9CkBAIC0xNjQsNyArMTcw
LDcgQEAgSW1hZ2UqIFNWR0ltYWdlQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlQml0bQogICAgIEltYWdl
KiBuZXdJbWFnZVB0ciA9IG5ld0ltYWdlLmdldCgpOwogICAgIEFTU0VSVChuZXdJbWFnZVB0cik7
CiAKLSAgICBtX2ltYWdlRGF0YU1hcC5hZGQocmVuZGVyZXIsIEltYWdlRGF0YShuZXdCdWZmZXIu
bGVha1B0cigpLCBuZXdJbWFnZS5yZWxlYXNlKCksIHNpemVJdC0+c2Vjb25kKSk7CisgICAgbV9p
bWFnZURhdGFNYXAuYWRkKGNsaWVudCwgSW1hZ2VEYXRhKG5ld0J1ZmZlci5sZWFrUHRyKCksIG5l
d0ltYWdlLnJlbGVhc2UoKSwgc2l6ZUl0LT5zZWNvbmQpKTsKICAgICByZXR1cm4gbmV3SW1hZ2VQ
dHI7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2Fj
aGUuaAkocmV2aXNpb24gMTE5MjQxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRJbWFnZTsKK2NsYXNzIENhY2hlZEltYWdlQ2xpZW50
OwogY2xhc3MgSW1hZ2VCdWZmZXI7Ci1jbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBTVkdJbWFn
ZTsKIAogY2xhc3MgU1ZHSW1hZ2VDYWNoZSB7CkBAIC02MywxMiArNjMsMTIgQEAgcHVibGljOgog
ICAgICAgICBmbG9hdCBzY2FsZTsKICAgICB9OwogCi0gICAgdm9pZCByZW1vdmVSZW5kZXJlckZy
b21DYWNoZShjb25zdCBSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIHJlbW92ZUNsaWVudEZyb21D
YWNoZShjb25zdCBDYWNoZWRJbWFnZUNsaWVudCopOwogCi0gICAgdm9pZCBzZXRSZXF1ZXN0ZWRT
aXplQW5kU2NhbGVzKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IFNpemVBbmRTY2FsZXMmKTsK
LSAgICBTaXplQW5kU2NhbGVzIHJlcXVlc3RlZFNpemVBbmRTY2FsZXMoY29uc3QgUmVuZGVyT2Jq
ZWN0KikgY29uc3Q7CisgICAgdm9pZCBzZXRSZXF1ZXN0ZWRTaXplQW5kU2NhbGVzKGNvbnN0IENh
Y2hlZEltYWdlQ2xpZW50KiwgY29uc3QgU2l6ZUFuZFNjYWxlcyYpOworICAgIFNpemVBbmRTY2Fs
ZXMgcmVxdWVzdGVkU2l6ZUFuZFNjYWxlcyhjb25zdCBDYWNoZWRJbWFnZUNsaWVudCopIGNvbnN0
OwogCi0gICAgSW1hZ2UqIGxvb2t1cE9yQ3JlYXRlQml0bWFwSW1hZ2VGb3JSZW5kZXJlcihjb25z
dCBSZW5kZXJPYmplY3QqKTsKKyAgICBJbWFnZSogbG9va3VwT3JDcmVhdGVCaXRtYXBJbWFnZUZv
ckNsaWVudChjb25zdCBDYWNoZWRJbWFnZUNsaWVudCopOwogICAgIHZvaWQgaW1hZ2VDb250ZW50
Q2hhbmdlZCgpOwogCiBwcml2YXRlOgpAQCAtOTgsOCArOTgsOCBAQCBwcml2YXRlOgogICAgICAg
ICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogICAgIH07CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8Y29u
c3QgUmVuZGVyT2JqZWN0KiwgU2l6ZUFuZFNjYWxlcz4gU2l6ZUFuZFNjYWxlc01hcDsKLSAgICB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0KiwgSW1hZ2VEYXRhPiBJbWFnZURhdGFN
YXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENhY2hlZEltYWdlQ2xpZW50KiwgU2l6ZUFu
ZFNjYWxlcz4gU2l6ZUFuZFNjYWxlc01hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ2Fj
aGVkSW1hZ2VDbGllbnQqLCBJbWFnZURhdGE+IEltYWdlRGF0YU1hcDsKIAogICAgIFNWR0ltYWdl
KiBtX3N2Z0ltYWdlOwogICAgIFNpemVBbmRTY2FsZXNNYXAgbV9zaXplQW5kU2NhbGVzTWFwOwpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMTE5MjQzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDYtMDEgIFhpYW56aHUgV2FuZyAgPHdh
bmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTVkdJbWFnZUNhY2hlIGxlYWtzIGlt
YWdlIGRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg3NzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TmV3IHRlc3QgY2FzZS4KKworICAgICAgICAqIHN2Zy9hcy1pbWFnZS9zdmctaW1hZ2UtbGVhay1j
YWNoZWQtZGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hcy1pbWFnZS9z
dmctaW1hZ2UtbGVhay1jYWNoZWQtZGF0YS5odG1sOiBBZGRlZC4KKwogMjAxMi0wNi0wMSAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtF
RkxdIEVGTCBwb3J0IGRvZXMgbm90IGVuYWJsZSBXRUJfSU5URU5UU19UQUcgZmxhZwpJbmRleDog
TGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS1sZWFrLWNhY2hlZC1kYXRhLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWltYWdl
LWxlYWstY2FjaGVkLWRhdGEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS1sZWFrLWNhY2hlZC1kYXRhLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACitUaGlzIHRlc3QgY2hlY2tzIGlmIFNWR0ltYWdl
Q2FjaGUgbGVha3MgU1ZHIGltYWdlIGRhdGEgYXMgcmVwb3J0ZWQgaW4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NzkyLiBJdHMgbGF5b3V0IGhhcyBubyBwYXJ0aWN1
bGFyIG1lYW5pbmcuIFRoZSB0ZXN0IHdpbGwgY2F1c2UgY3Jhc2ggb2YgZGVidWcgdmVyc2lvbiB3
aGVuIGxlYWtzIG9mIFNWRyBpbWFnZSBkYXRhIGlzIGRldGVjdGVkLgorCitOb3RlOiB0aGUgY29k
ZSBkZXRlY3RzIGxlYWtzIG9mIFNWRyBpbWFnZSBkYXRhIG9uIGRlc3RydWN0aW9uIG9mIFNWR0lt
YWdlQ2FjaGUsIHdoaWNoIGRvZXNuJ3Qgd29yayBvbiBwbGF0Zm9ybXMgdGhhdCBEdW1wUmVuZGVy
VHJlZSBsZWFrcyB0aGUgY2FjaGUgaXRzZWxmLgorCisKClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctaW1hZ2UtbGVhay1jYWNoZWQtZGF0YS1leHBlY3Rl
ZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5
b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS1sZWFrLWNhY2hlZC1kYXRhLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS1sZWFrLWNhY2hl
ZC1kYXRhLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3Zn
LWltYWdlLWxlYWstY2FjaGVkLWRhdGEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIGNvdW50ID0gMDsKK2Z1
bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp
bWcnKTsKKyAgICBkb2N1bWVudC5ib2R5LnJlcGxhY2VDaGlsZChpbWcuY2xvbmVOb2RlKCksIGlt
Zyk7CisgICAgaWYgKCsrY291bnQgPCAxMCkKKyAgICAgICAgc2V0VGltZW91dCh0ZXN0LCAwKTsK
KyAgICBlbHNlIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8
Ym9keSBvbmxvYWQ9J3Rlc3QoKSc+CisgICAgPHA+VGhpcyB0ZXN0IGNoZWNrcyBpZiBTVkdJbWFn
ZUNhY2hlIGxlYWtzIFNWRyBpbWFnZSBkYXRhIGFzIHJlcG9ydGVkIGluCisgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NzkyLiBJdHMgbGF5b3V0IGhhcyBubyBw
YXJ0aWN1bGFyIG1lYW5pbmcuCisgICAgVGhlIHRlc3Qgd2lsbCBjYXVzZSBjcmFzaCBvZiBkZWJ1
ZyB2ZXJzaW9uIHdoZW4gbGVha3Mgb2YgU1ZHIGltYWdlIGRhdGEgaXMgZGV0ZWN0ZWQuPC9wPgor
ICAgIDxwPk5vdGU6IHRoZSBjb2RlIGRldGVjdHMgbGVha3Mgb2YgU1ZHIGltYWdlIGRhdGEgb24g
ZGVzdHJ1Y3Rpb24gb2YgU1ZHSW1hZ2VDYWNoZSwKKyAgICB3aGljaCBkb2Vzbid0IHdvcmsgb24g
cGxhdGZvcm1zIHRoYXQgRHVtcFJlbmRlclRyZWUgbGVha3MgdGhlIGNhY2hlIGl0c2VsZi48L3A+
CisgICAgPGltZyBpZD0naW1nJyBzcmM9J3Jlc291cmNlcy9jaXJjbGUuc3ZnJz4KKzwvYm9keT4K
KzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9z
dmctaW1hZ2UtbGVhay1jYWNoZWQtZGF0YS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wt
c3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146880</attachid>
            <date>2012-06-11 11:23:17 -0700</date>
            <delta_ts>2012-06-11 13:16:03 -0700</delta_ts>
            <desc>patch rebased</desc>
            <filename>87792-rebase</filename>
            <type>text/plain</type>
            <size>21157</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExOTk4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA2LTExICBYaWFuemh1
IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU1ZHSW1hZ2VDYWNo
ZSBsZWFrcyBpbWFnZSBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04Nzc5MgorCisgICAgICAgIFRoZXJlIGFyZSB0d28gZnVuY3Rpb25zIHRvIHJl
bW92ZSBhIGNsaWVudCBmcm9tIGEgQ2FjaGVkSW1hZ2U6CisgICAgICAgIC0gQ2FjaGVkUmVzb3Vy
Y2U6OnJlbW92ZUNsaWVudCgpCisgICAgICAgIC0gQ2FjaGVkSW1hZ2U6OnJlbW92ZUNsaWVudEZv
clJlbmRlcmVyKCkuCisgICAgICAgIEl0J3MgZWFzeSB0byBtYWtlIGVycm9yIHRvIGNhbGwgdGhl
IGZvcm1lciB3aGljaCB3aWxsIGxlYWsgdGhlIGNhY2hlZAorICAgICAgICBpbWFnZSBidWZmZXJz
IGluIFNWR0ltYWdlQ2FjaGUuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgY29tYmluZWQgdGhlIHR3
byBieSBhZGRpbmcgdGhlIHZpcnR1YWwgCisgICAgICAgIENhY2hlZFJlc291cmNlOjpkaWRSZW1v
dmVDbGllbnQoKS4gQ2FjaGVkSW1hZ2Ugd2lsbCBkbyBTVkdJbWFnZUNhY2hlCisgICAgICAgIGNs
ZWFudXAgaW4gdGhlIGZ1bmN0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5pa29sYXMgWmlt
bWVybWFubi4KKworICAgICAgICBUZXN0OiBzdmcvYXMtaW1hZ2Uvc3ZnLWltYWdlLWxlYWstY2Fj
aGVkLWRhdGEuaHRtbAorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnRDbGllbnQ6OnJlc291cmNlQ2xpZW50VHlwZSk6IEFk
ZGVkICdjb25zdCcuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmRpZFJlbW92
ZUNsaWVudCk6IFJlbW92ZXMgdGhlIGNsaWVudCBmcm9tIFNWR0ltYWdlQ2FjaGUuCisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6bG9va3VwT3JDcmVhdGVJbWFnZUZvclJlbmRlcmVyKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKENhY2hlZElt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlQ2xpZW50OjpyZXNvdXJjZUNsaWVu
dFR5cGUpOiBBZGRlZCAnY29uc3QnLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ6OnJl
c291cmNlQ2xpZW50VHlwZSk6IEFkZGVkICdjb25zdCcuCisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpy
ZW1vdmVDbGllbnQpOiBBZGRlZCBpbnZvY2F0aW9uIG9mIGRpZFJlbW92ZUNsaWVudCgpLgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OmRpZFJlbW92ZUNsaWVudCk6IEFkZGVkIGZvciBzdWJjbGFzc2VzIHRv
IGRvIGFkZGl0aW9uYWwgd29ya3MuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUNsaWVudDo6cmVz
b3VyY2VDbGllbnRUeXBlKTogQWRkZWQgJ2NvbnN0Jy4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50
Q2xpZW50OjpyZXNvdXJjZUNsaWVudFR5cGUpOiBBZGRlZCAnY29uc3QnLgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRTdHlsZVNoZWV0Q2xpZW50OjpyZXNvdXJjZUNsaWVudFR5cGUpOiBBZGRlZCAnY29uc3Qn
LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2U6OnJlbW92ZUNsaWVudCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVDYWNoZWRJbWFnZVNldDo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hl
Ojp+U1ZHSW1hZ2VDYWNoZSk6IEFkZGVkIGNoZWNraW5nIGZvciBsZWFrcy4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlQ2FjaGU6OnJlbW92ZUNsaWVudEZyb21DYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjpzZXRSZXF1ZXN0ZWRTaXplQW5kU2NhbGVzKTogCisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjpyZXF1ZXN0ZWRTaXplQW5kU2NhbGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlQml0bWFwSW1hZ2VG
b3JDbGllbnQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNWR0ltYWdlQ2FjaGUpOgorCiAyMDEyLTA2LTExICBE
YXZpZCBCYXJyICA8ZGF2aWRiYXJyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgY3NzMy1p
bWFnZXMgaW1hZ2UtcmVzb2x1dGlvbiAoZHBweCBvbmx5KQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCShyZXZpc2lvbiAxMTk5ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4
NSw3IEBAIGNsYXNzIENhY2hlZEZvbnRDbGllbnQgOiBwdWJsaWMgQ2FjaGVkUmUKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5DYWNoZWRGb250Q2xpZW50KCkgeyB9CiAgICAgc3RhdGljIENhY2hlZFJl
c291cmNlQ2xpZW50VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJldHVybiBGb250VHlwZTsgfQotICAg
IHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIHsg
cmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9CisgICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUNsaWVu
dFR5cGUgcmVzb3VyY2VDbGllbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gZXhwZWN0ZWRUeXBlKCk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZm9udExvYWRlZChDYWNoZWRGb250KikgeyB9CiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlz
aW9uIDExOTk4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDE1ICs5Miw2IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6Omxv
YWQoQ2FjaGVkUmVzb3VyY2VMb2EKICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiB9CiAKLXZv
aWQgQ2FjaGVkSW1hZ2U6OnJlbW92ZUNsaWVudEZvclJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCi17Ci0jaWYgRU5BQkxFKFNWRykKLSAgICBpZiAobV9zdmdJbWFnZUNhY2hlKQotICAg
ICAgICBtX3N2Z0ltYWdlQ2FjaGUtPnJlbW92ZVJlbmRlcmVyRnJvbUNhY2hlKHJlbmRlcmVyKTsK
LSNlbmRpZgotICAgIHJlbW92ZUNsaWVudChyZW5kZXJlcik7Ci19Ci0KIHZvaWQgQ2FjaGVkSW1h
Z2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKIHsKICAgICBpZiAobV9k
ZWNvZGVkRGF0YURlbGV0aW9uVGltZXIuaXNBY3RpdmUoKSkKQEAgLTExOCw2ICsxMDksMTcgQEAg
dm9pZCBDYWNoZWRJbWFnZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlcwogICAgIENhY2hlZFJlc291
cmNlOjpkaWRBZGRDbGllbnQoYyk7CiB9CiAKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmRpZFJlbW92ZUNs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKK3sKKyAgICBBU1NFUlQoYy0+cmVzb3VyY2VD
bGllbnRUeXBlKCkgPT0gQ2FjaGVkSW1hZ2VDbGllbnQ6OmV4cGVjdGVkVHlwZSgpKTsKKyNpZiBF
TkFCTEUoU1ZHKQorICAgIGlmIChtX3N2Z0ltYWdlQ2FjaGUpCisgICAgICAgIG1fc3ZnSW1hZ2VD
YWNoZS0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHN0YXRpY19jYXN0PENhY2hlZEltYWdlQ2xpZW50
Kj4oYykpOworI2VuZGlmCisKKyAgICBDYWNoZWRSZXNvdXJjZTo6ZGlkUmVtb3ZlQ2xpZW50KGMp
OworfQorCiB2b2lkIENhY2hlZEltYWdlOjphbGxDbGllbnRzUmVtb3ZlZCgpCiB7CiAgICAgaWYg
KG1faW1hZ2UgJiYgIWVycm9yT2NjdXJyZWQoKSkKQEAgLTE0OSw3ICsxNTEsNyBAQCBpbmxpbmUg
SW1hZ2UqIENhY2hlZEltYWdlOjpsb29rdXBPckNyZWF0CiAgICAgICAgIHJldHVybiAwOwogICAg
IGlmICghbV9pbWFnZS0+aXNTVkdJbWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbWFnZS5nZXQo
KTsKLSAgICBJbWFnZSogdXNlSW1hZ2UgPSBtX3N2Z0ltYWdlQ2FjaGUtPmxvb2t1cE9yQ3JlYXRl
Qml0bWFwSW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CisgICAgSW1hZ2UqIHVzZUltYWdlID0g
bV9zdmdJbWFnZUNhY2hlLT5sb29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9yQ2xpZW50KHJlbmRl
cmVyKTsKICAgICBpZiAodXNlSW1hZ2UgPT0gSW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICBy
ZXR1cm4gbV9pbWFnZS5nZXQoKTsKICAgICByZXR1cm4gdXNlSW1hZ2U7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkocmV2aXNpb24gMTE5OTg2KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY3LDkgKzY3LDkgQEAgcHVibGljOgogICAgIEludFNpemUgaW1hZ2VTaXplRm9yUmVuZGVy
ZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgZmxvYXQgbXVsdGlwbGllcik7IC8vIHJldHVybnMgdGhl
IHNpemUgb2YgdGhlIGNvbXBsZXRlIGltYWdlLgogICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0Rp
bWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQs
IEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pOwogCi0gICAgdm9pZCByZW1vdmVDbGllbnRGb3JS
ZW5kZXJlcihSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENh
Y2hlZFJlc291cmNlQ2xpZW50Kik7Ci0gICAgCisgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZUNs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOworCiAgICAgdmlydHVhbCB2b2lkIGFsbENsaWVu
dHNSZW1vdmVkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpOwogCkBA
IC0xMTgsNyArMTE4LDcgQEAgY2xhc3MgQ2FjaGVkSW1hZ2VDbGllbnQgOiBwdWJsaWMgQ2FjaGVk
UgogcHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZEltYWdlQ2xpZW50KCkgeyB9CiAgICAgc3Rh
dGljIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJldHVybiBJbWFn
ZVR5cGU7IH0KLSAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNs
aWVudFR5cGUoKSB7IHJldHVybiBleHBlY3RlZFR5cGUoKTsgfQorICAgIHZpcnR1YWwgQ2FjaGVk
UmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGV4
cGVjdGVkVHlwZSgpOyB9CiAKICAgICAvLyBDYWxsZWQgd2hlbmV2ZXIgYSBmcmFtZSBvZiBhbiBp
bWFnZSBjaGFuZ2VzLCBlaXRoZXIgYmVjYXVzZSB3ZSBnb3QgbW9yZSBkYXRhIGZyb20gdGhlIG5l
dHdvcmsgb3IKICAgICAvLyBiZWNhdXNlIHdlIGFyZSBhbmltYXRpbmcuIElmIG5vdCBudWxsLCB0
aGUgSW50UmVjdCBpcyB0aGUgY2hhbmdlZCByZWN0IG9mIHRoZSBpbWFnZS4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCShyZXZpc2lv
biAxMTk5ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudCA6IHB1YmxpYyBDCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQoKSB7IH0KICAgICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIGV4
cGVjdGVkVHlwZSgpIHsgcmV0dXJuIFJhd1Jlc291cmNlVHlwZTsgfQotICAgIHZpcnR1YWwgQ2Fj
aGVkUmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIHsgcmV0dXJuIGV4cGVj
dGVkVHlwZSgpOyB9CisgICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgcmVzb3Vy
Y2VDbGllbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gZXhwZWN0ZWRUeXBlKCk7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAv
KiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQg
Ki8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAxMTk5ODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MjYsNiArNDI2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6cmVtb3ZlQ2xpZW50
KENhY2hlZAogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMo
Y2xpZW50KSk7CiAgICAgICAgIG1fY2xpZW50cy5yZW1vdmUoY2xpZW50KTsKKyAgICAgICAgZGlk
UmVtb3ZlQ2xpZW50KGNsaWVudCk7CiAgICAgfQogCiAgICAgaWYgKGNhbkRlbGV0ZSgpICYmICFp
bkNhY2hlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAkocmV2aXNpb24gMTE5OTg2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQCBwdWJs
aWM6CiAgICAgUHJlbG9hZFJlc3VsdCBwcmVsb2FkUmVzdWx0KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8UHJlbG9hZFJlc3VsdD4obV9wcmVsb2FkUmVzdWx0KTsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOworICAgIHZpcnR1YWwg
dm9pZCBkaWRSZW1vdmVDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSB7IH0KIAogICAgIHVuc2lnbmVkIGNvdW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jbGllbnRzLnNpemUoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgJKHJldmlzaW9uIDEx
OTk4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoQ2FjaGVkUmVzb3VyY2UqKSB7IH07CiAgICAgCiAgICAgc3Rh
dGljIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJldHVybiBCYXNl
UmVzb3VyY2VUeXBlOyB9Ci0gICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgcmVz
b3VyY2VDbGllbnRUeXBlKCkgeyByZXR1cm4gZXhwZWN0ZWRUeXBlKCk7IH0KKyAgICB2aXJ0dWFs
IENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSBjb25zdCB7IHJl
dHVybiBleHBlY3RlZFR5cGUoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgQ2FjaGVkUmVzb3VyY2VD
bGllbnQoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5oCShyZXZpc2lvbiAxMTk5ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIs
NyBAQCBjbGFzcyBDYWNoZWRTVkdEb2N1bWVudENsaWVudCA6IHB1YmxpYyBDCiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+Q2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQoKSB7IH0KICAgICBzdGF0aWMgQ2Fj
aGVkUmVzb3VyY2VDbGllbnRUeXBlIGV4cGVjdGVkVHlwZSgpIHsgcmV0dXJuIFNWR0RvY3VtZW50
VHlwZTsgfQotICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xp
ZW50VHlwZSgpIHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9CisgICAgdmlydHVhbCBDYWNoZWRS
ZXNvdXJjZUNsaWVudFR5cGUgcmVzb3VyY2VDbGllbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gZXhw
ZWN0ZWRUeXBlKCk7IH0KIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaAkocmV2aXNpb24gMTE5OTg2KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBDYWNoZWRTdHlsZVNoZWV0Q2xp
ZW50IDogcHVibGljIENhCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FjaGVkU3R5bGVTaGVldENs
aWVudCgpIHsgfQogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgZXhwZWN0ZWRU
eXBlKCkgeyByZXR1cm4gU3R5bGVTaGVldFR5cGU7IH0KLSAgICB2aXJ0dWFsIENhY2hlZFJlc291
cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSB7IHJldHVybiBleHBlY3RlZFR5cGUo
KTsgfQorICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiAvKiBocmVmICovLCBjb25zdCBLVVJMJiAv
KiBiYXNlVVJMICovLCBjb25zdCBTdHJpbmcmIC8qIGNoYXJzZXQgKi8sIGNvbnN0IENhY2hlZENT
U1N0eWxlU2hlZXQqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0WFNMU3R5bGVTaGVldChjb25z
dCBTdHJpbmcmIC8qIGhyZWYgKi8sIGNvbnN0IEtVUkwmIC8qIGJhc2VVUkwgKi8sIGNvbnN0IFN0
cmluZyYgLyogc2hlZXQgKi8pIHsgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDExOTk4NikK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFN0eWxlQ2FjaGVkSW1hZ2U6OmFk
ZENsaWVudChSZW5kZXJPCiAKIHZvaWQgU3R5bGVDYWNoZWRJbWFnZTo6cmVtb3ZlQ2xpZW50KFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgbV9pbWFnZS0+cmVtb3ZlQ2xpZW50Rm9yUmVu
ZGVyZXIocmVuZGVyZXIpOworICAgIG1faW1hZ2UtPnJlbW92ZUNsaWVudChyZW5kZXJlcik7CiB9
CiAKIFBhc3NSZWZQdHI8SW1hZ2U+IFN0eWxlQ2FjaGVkSW1hZ2U6OmltYWdlKFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNwcAkocmV2
aXNpb24gMTE5OTg2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2Fj
aGVkSW1hZ2VTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBT
dHlsZUNhY2hlZEltYWdlU2V0OjphZGRDbGllbnQoUmVuZAogCiB2b2lkIFN0eWxlQ2FjaGVkSW1h
Z2VTZXQ6OnJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIG1fYmVz
dEZpdEltYWdlLT5yZW1vdmVDbGllbnRGb3JSZW5kZXJlcihyZW5kZXJlcik7CisgICAgbV9iZXN0
Rml0SW1hZ2UtPnJlbW92ZUNsaWVudChyZW5kZXJlcik7CiB9CiAKIFBhc3NSZWZQdHI8SW1hZ2U+
IFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmltYWdlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0
IEludFNpemUmKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUNhY2hlLmNwcAkocmV2aXNpb24gMTE5OTg2KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3
IEBACiAjaW5jbHVkZSAiU1ZHSW1hZ2VDYWNoZS5oIgogCiAjaWYgRU5BQkxFKFNWRykKKyNpbmNs
dWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCkBAIC00MSwxOCArNDIs
MjMgQEAgU1ZHSW1hZ2VDYWNoZTo6flNWR0ltYWdlQ2FjaGUoKQogICAgIG1fc2l6ZUFuZFNjYWxl
c01hcC5jbGVhcigpOwogCiAgICAgSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBlbmQgPSBtX2ltYWdl
RGF0YU1hcC5lbmQoKTsKLSAgICBmb3IgKEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBtX2lt
YWdlRGF0YU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgZm9yIChJbWFnZURhdGFN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZURhdGFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7CisgICAgICAgIC8vIENoZWNrcyBpZiB0aGUgY2xpZW50IChpdC0+Zmlyc3QpIGlzIHN0aWxs
IHZhbGlkLiBUaGUgY2xpZW50IHNob3VsZCByZW1vdmUgaXRzZWxmIGZyb20gdGhpcworICAgICAg
ICAvLyBjYWNoZSBiZWZvcmUgaXRzIGVuZCBvZiBsaWZlLCBvdGhlcndpc2UgdGhlIGZvbGxvd2lu
ZyBBU1NFUlQgd2lsbCBjcmFzaCBvbiBwdXJlIHZpcnR1YWwKKyAgICAgICAgLy8gZnVuY3Rpb24g
Y2FsbCBvciBhIGdlbmVyYWwgY3Jhc2guCisgICAgICAgIEFTU0VSVChpdC0+Zmlyc3QtPnJlc291
cmNlQ2xpZW50VHlwZSgpID09IENhY2hlZEltYWdlQ2xpZW50OjpleHBlY3RlZFR5cGUoKSk7CiAg
ICAgICAgIGRlbGV0ZSBpdC0+c2Vjb25kLmJ1ZmZlcjsKKyAgICB9CiAKICAgICBtX2ltYWdlRGF0
YU1hcC5jbGVhcigpOwogfQogCi12b2lkIFNWR0ltYWdlQ2FjaGU6OnJlbW92ZVJlbmRlcmVyRnJv
bUNhY2hlKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit2b2lkIFNWR0ltYWdlQ2FjaGU6
OnJlbW92ZUNsaWVudEZyb21DYWNoZShjb25zdCBDYWNoZWRJbWFnZUNsaWVudCogY2xpZW50KQog
ewotICAgIEFTU0VSVChyZW5kZXJlcik7Ci0gICAgbV9zaXplQW5kU2NhbGVzTWFwLnJlbW92ZShy
ZW5kZXJlcik7CisgICAgQVNTRVJUKGNsaWVudCk7CisgICAgbV9zaXplQW5kU2NhbGVzTWFwLnJl
bW92ZShjbGllbnQpOwogCi0gICAgSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBpdCA9IG1faW1hZ2VE
YXRhTWFwLmZpbmQocmVuZGVyZXIpOworICAgIEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBt
X2ltYWdlRGF0YU1hcC5maW5kKGNsaWVudCk7CiAgICAgaWYgKGl0ID09IG1faW1hZ2VEYXRhTWFw
LmVuZCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTYwLDE3ICs2NiwxNyBAQCB2b2lkIFNWR0lt
YWdlQ2FjaGU6OnJlbW92ZVJlbmRlcmVyRnJvbUNhCiAgICAgbV9pbWFnZURhdGFNYXAucmVtb3Zl
KGl0KTsKIH0KIAotdm9pZCBTVkdJbWFnZUNhY2hlOjpzZXRSZXF1ZXN0ZWRTaXplQW5kU2NhbGVz
KGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFNpemVBbmRTY2FsZXMmIHNpemVB
bmRTY2FsZXMpCit2b2lkIFNWR0ltYWdlQ2FjaGU6OnNldFJlcXVlc3RlZFNpemVBbmRTY2FsZXMo
Y29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqIGNsaWVudCwgY29uc3QgU2l6ZUFuZFNjYWxlcyYgc2l6
ZUFuZFNjYWxlcykKIHsKLSAgICBBU1NFUlQocmVuZGVyZXIpOworICAgIEFTU0VSVChjbGllbnQp
OwogICAgIEFTU0VSVCghc2l6ZUFuZFNjYWxlcy5zaXplLmlzRW1wdHkoKSk7Ci0gICAgbV9zaXpl
QW5kU2NhbGVzTWFwLnNldChyZW5kZXJlciwgc2l6ZUFuZFNjYWxlcyk7CisgICAgbV9zaXplQW5k
U2NhbGVzTWFwLnNldChjbGllbnQsIHNpemVBbmRTY2FsZXMpOwogfQogCi1TVkdJbWFnZUNhY2hl
OjpTaXplQW5kU2NhbGVzIFNWR0ltYWdlQ2FjaGU6OnJlcXVlc3RlZFNpemVBbmRTY2FsZXMoY29u
c3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK1NWR0ltYWdlQ2FjaGU6OlNpemVBbmRT
Y2FsZXMgU1ZHSW1hZ2VDYWNoZTo6cmVxdWVzdGVkU2l6ZUFuZFNjYWxlcyhjb25zdCBDYWNoZWRJ
bWFnZUNsaWVudCogY2xpZW50KSBjb25zdAogewotICAgIEFTU0VSVChyZW5kZXJlcik7Ci0gICAg
U2l6ZUFuZFNjYWxlc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3NpemVBbmRTY2FsZXNNYXAu
ZmluZChyZW5kZXJlcik7CisgICAgQVNTRVJUKGNsaWVudCk7CisgICAgU2l6ZUFuZFNjYWxlc01h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3NpemVBbmRTY2FsZXNNYXAuZmluZChjbGllbnQpOwog
ICAgIGlmIChpdCA9PSBtX3NpemVBbmRTY2FsZXNNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBT
aXplQW5kU2NhbGVzKCk7CiAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CkBAIC0xMjIsMTIgKzEyOCwx
MiBAQCB2b2lkIFNWR0ltYWdlQ2FjaGU6OnJlZHJhd1RpbWVyRmlyZWQoVGltCiAgICAgICAgcmVk
cmF3KCk7CiB9CiAKLUltYWdlKiBTVkdJbWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUJpdG1hcElt
YWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK0ltYWdlKiBTVkdJ
bWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9yQ2xpZW50KGNvbnN0IENhY2hl
ZEltYWdlQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgQVNTRVJUKHJlbmRlcmVyKTsKKyAgICBBU1NF
UlQoY2xpZW50KTsKIAotICAgIC8vIFRoZSBjYWNoZSBuZWVkcyB0byBrbm93IHRoZSBzaXplIG9m
IHRoZSByZW5kZXJlciBiZWZvcmUgcXVlcnlpbmcgYW4gaW1hZ2UgZm9yIGl0LgotICAgIFNpemVB
bmRTY2FsZXNNYXA6Oml0ZXJhdG9yIHNpemVJdCA9IG1fc2l6ZUFuZFNjYWxlc01hcC5maW5kKHJl
bmRlcmVyKTsKKyAgICAvLyBUaGUgY2FjaGUgbmVlZHMgdG8ga25vdyB0aGUgc2l6ZSBvZiB0aGUg
Y2xpZW50IGJlZm9yZSBxdWVyeWluZyBhbiBpbWFnZSBmb3IgaXQuCisgICAgU2l6ZUFuZFNjYWxl
c01hcDo6aXRlcmF0b3Igc2l6ZUl0ID0gbV9zaXplQW5kU2NhbGVzTWFwLmZpbmQoY2xpZW50KTsK
ICAgICBpZiAoc2l6ZUl0ID09IG1fc2l6ZUFuZFNjYWxlc01hcC5lbmQoKSkKICAgICAgICAgcmV0
dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKIApAQCAtMTM2LDggKzE0Miw4IEBAIEltYWdlKiBTVkdJ
bWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUJpdG0KICAgICBmbG9hdCBzY2FsZSA9IHNpemVJdC0+
c2Vjb25kLnNjYWxlOwogICAgIEFTU0VSVCghc2l6ZS5pc0VtcHR5KCkpOwogCi0gICAgLy8gTG9v
a3VwIGltYWdlIGZvciByZW5kZXJlciBpbiBjYWNoZSBhbmQgZXZlbnR1YWxseSB1cGRhdGUgaXQu
Ci0gICAgSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBpdCA9IG1faW1hZ2VEYXRhTWFwLmZpbmQocmVu
ZGVyZXIpOworICAgIC8vIExvb2t1cCBpbWFnZSBmb3IgY2xpZW50IGluIGNhY2hlIGFuZCBldmVu
dHVhbGx5IHVwZGF0ZSBpdC4KKyAgICBJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFn
ZURhdGFNYXAuZmluZChjbGllbnQpOwogICAgIGlmIChpdCAhPSBtX2ltYWdlRGF0YU1hcC5lbmQo
KSkgewogICAgICAgICBJbWFnZURhdGEmIGRhdGEgPSBpdC0+c2Vjb25kOwogCkBAIC0xNDUsNyAr
MTUxLDcgQEAgSW1hZ2UqIFNWR0ltYWdlQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlQml0bQogICAgICAg
ICBpZiAoZGF0YS5zaXplQW5kU2NhbGVzLnNpemUgPT0gc2l6ZSAmJiBkYXRhLnNpemVBbmRTY2Fs
ZXMuem9vbSA9PSB6b29tICYmIGRhdGEuc2l6ZUFuZFNjYWxlcy5zY2FsZSA9PSBzY2FsZSkKICAg
ICAgICAgICAgIHJldHVybiBkYXRhLmltYWdlLmdldCgpOwogCi0gICAgICAgIC8vIElmIHRoZSBp
bWFnZSBzaXplIGZvciB0aGUgcmVuZGVyZXIgY2hhbmdlZCwgd2UgaGF2ZSB0byBkZWxldGUgdGhl
IGJ1ZmZlciwgcmVtb3ZlIHRoZSBpdGVtIGZyb20gdGhlIGNhY2hlIGFuZCByZWNyZWF0ZSBpdC4K
KyAgICAgICAgLy8gSWYgdGhlIGltYWdlIHNpemUgZm9yIHRoZSBjbGllbnQgY2hhbmdlZCwgd2Ug
aGF2ZSB0byBkZWxldGUgdGhlIGJ1ZmZlciwgcmVtb3ZlIHRoZSBpdGVtIGZyb20gdGhlIGNhY2hl
IGFuZCByZWNyZWF0ZSBpdC4KICAgICAgICAgZGVsZXRlIGRhdGEuYnVmZmVyOwogICAgICAgICBt
X2ltYWdlRGF0YU1hcC5yZW1vdmUoaXQpOwogICAgIH0KQEAgLTE2NCw3ICsxNzAsNyBAQCBJbWFn
ZSogU1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVhdGVCaXRtCiAgICAgSW1hZ2UqIG5ld0ltYWdl
UHRyID0gbmV3SW1hZ2UuZ2V0KCk7CiAgICAgQVNTRVJUKG5ld0ltYWdlUHRyKTsKIAotICAgIG1f
aW1hZ2VEYXRhTWFwLmFkZChyZW5kZXJlciwgSW1hZ2VEYXRhKG5ld0J1ZmZlci5sZWFrUHRyKCks
IG5ld0ltYWdlLnJlbGVhc2UoKSwgc2l6ZUl0LT5zZWNvbmQpKTsKKyAgICBtX2ltYWdlRGF0YU1h
cC5hZGQoY2xpZW50LCBJbWFnZURhdGEobmV3QnVmZmVyLmxlYWtQdHIoKSwgbmV3SW1hZ2UucmVs
ZWFzZSgpLCBzaXplSXQtPnNlY29uZCkpOwogICAgIHJldHVybiBuZXdJbWFnZVB0cjsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCShyZXZp
c2lvbiAxMTk5ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNo
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENhY2hlZEltYWdlOworY2xhc3MgQ2FjaGVkSW1hZ2VDbGllbnQ7CiBjbGFzcyBJ
bWFnZUJ1ZmZlcjsKLWNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNWR0ltYWdlOwogCiBjbGFz
cyBTVkdJbWFnZUNhY2hlIHsKQEAgLTYzLDEyICs2MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIGZs
b2F0IHNjYWxlOwogICAgIH07CiAKLSAgICB2b2lkIHJlbW92ZVJlbmRlcmVyRnJvbUNhY2hlKGNv
bnN0IFJlbmRlck9iamVjdCopOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50RnJvbUNhY2hlKGNvbnN0
IENhY2hlZEltYWdlQ2xpZW50Kik7CiAKLSAgICB2b2lkIHNldFJlcXVlc3RlZFNpemVBbmRTY2Fs
ZXMoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgU2l6ZUFuZFNjYWxlcyYpOwotICAgIFNpemVB
bmRTY2FsZXMgcmVxdWVzdGVkU2l6ZUFuZFNjYWxlcyhjb25zdCBSZW5kZXJPYmplY3QqKSBjb25z
dDsKKyAgICB2b2lkIHNldFJlcXVlc3RlZFNpemVBbmRTY2FsZXMoY29uc3QgQ2FjaGVkSW1hZ2VD
bGllbnQqLCBjb25zdCBTaXplQW5kU2NhbGVzJik7CisgICAgU2l6ZUFuZFNjYWxlcyByZXF1ZXN0
ZWRTaXplQW5kU2NhbGVzKGNvbnN0IENhY2hlZEltYWdlQ2xpZW50KikgY29uc3Q7CiAKLSAgICBJ
bWFnZSogbG9va3VwT3JDcmVhdGVCaXRtYXBJbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9i
amVjdCopOworICAgIEltYWdlKiBsb29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9yQ2xpZW50KGNv
bnN0IENhY2hlZEltYWdlQ2xpZW50Kik7CiAgICAgdm9pZCBpbWFnZUNvbnRlbnRDaGFuZ2VkKCk7
CiAKIHByaXZhdGU6CkBAIC05OCw4ICs5OCw4IEBAIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2U7CiAgICAgfTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJP
YmplY3QqLCBTaXplQW5kU2NhbGVzPiBTaXplQW5kU2NhbGVzTWFwOwotICAgIHR5cGVkZWYgSGFz
aE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBJbWFnZURhdGE+IEltYWdlRGF0YU1hcDsKKyAgICB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqLCBTaXplQW5kU2NhbGVzPiBT
aXplQW5kU2NhbGVzTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDYWNoZWRJbWFnZUNs
aWVudCosIEltYWdlRGF0YT4gSW1hZ2VEYXRhTWFwOwogCiAgICAgU1ZHSW1hZ2UqIG1fc3ZnSW1h
Z2U7CiAgICAgU2l6ZUFuZFNjYWxlc01hcCBtX3NpemVBbmRTY2FsZXNNYXA7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMTk5ODYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0xMSAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFNWR0ltYWdlQ2FjaGUgbGVha3MgaW1hZ2UgZGF0YQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc3OTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCisKKyAgICAgICAgTmV3IHRl
c3QgY2FzZS4KKworICAgICAgICAqIHN2Zy9hcy1pbWFnZS9zdmctaW1hZ2UtbGVhay1jYWNoZWQt
ZGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hcy1pbWFnZS9zdmctaW1h
Z2UtbGVhay1jYWNoZWQtZGF0YS5odG1sOiBBZGRlZC4KKwogMjAxMi0wNi0xMSAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgdGVzdFJ1bm5lciBpbnN0ZWFk
IG9mIGxheW91dFRlc3RDb250cm9sbGVyIGluIGFuaW1hdGlvbnMgdGVzdHMKSW5kZXg6IExheW91
dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctaW1hZ2UtbGVhay1jYWNoZWQtZGF0YS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS1sZWFr
LWNhY2hlZC1kYXRhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2
Zy9hcy1pbWFnZS9zdmctaW1hZ2UtbGVhay1jYWNoZWQtZGF0YS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0IGNoZWNrcyBpZiBTVkdJbWFnZUNhY2hl
IGxlYWtzIFNWRyBpbWFnZSBkYXRhIGFzIHJlcG9ydGVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04Nzc5Mi4gSXRzIGxheW91dCBoYXMgbm8gcGFydGljdWxhciBt
ZWFuaW5nLiBUaGUgdGVzdCB3aWxsIGNhdXNlIGNyYXNoIG9mIGRlYnVnIHZlcnNpb24gd2hlbiBs
ZWFrcyBvZiBTVkcgaW1hZ2UgZGF0YSBpcyBkZXRlY3RlZC4KKworTm90ZTogdGhlIGNvZGUgZGV0
ZWN0cyBsZWFrcyBvZiBTVkcgaW1hZ2UgZGF0YSBvbiBkZXN0cnVjdGlvbiBvZiBTVkdJbWFnZUNh
Y2hlLCB3aGljaCBkb2Vzbid0IHdvcmsgb24gcGxhdGZvcm1zIHRoYXQgRHVtcFJlbmRlclRyZWUg
bGVha3MgdGhlIGNhY2hlIGl0c2VsZi4KKworCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWltYWdlLWxlYWstY2FjaGVkLWRhdGEtZXhwZWN0ZWQudHh0
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRl
c3RzL3N2Zy9hcy1pbWFnZS9zdmctaW1hZ2UtbGVhay1jYWNoZWQtZGF0YS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctaW1hZ2UtbGVhay1jYWNoZWQtZGF0
YS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1pbWFn
ZS1sZWFrLWNhY2hlZC1kYXRhLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBjb3VudCA9IDA7CitmdW5jdGlv
biB0ZXN0KCkgeworICAgIHZhciBpbWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1nJyk7
CisgICAgZG9jdW1lbnQuYm9keS5yZXBsYWNlQ2hpbGQoaW1nLmNsb25lTm9kZSgpLCBpbWcpOwor
ICAgIGlmICgrK2NvdW50IDwgMTApCisgICAgICAgIHNldFRpbWVvdXQodGVzdCwgMCk7CisgICAg
ZWxzZSBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkg
b25sb2FkPSd0ZXN0KCknPgorICAgIDxwPlRoaXMgdGVzdCBjaGVja3MgaWYgU1ZHSW1hZ2VDYWNo
ZSBsZWFrcyBTVkcgaW1hZ2UgZGF0YSBhcyByZXBvcnRlZCBpbgorICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzc5Mi4gSXRzIGxheW91dCBoYXMgbm8gcGFydGlj
dWxhciBtZWFuaW5nLgorICAgIFRoZSB0ZXN0IHdpbGwgY2F1c2UgY3Jhc2ggb2YgZGVidWcgdmVy
c2lvbiB3aGVuIGxlYWtzIG9mIFNWRyBpbWFnZSBkYXRhIGlzIGRldGVjdGVkLjwvcD4KKyAgICA8
cD5Ob3RlOiB0aGUgY29kZSBkZXRlY3RzIGxlYWtzIG9mIFNWRyBpbWFnZSBkYXRhIG9uIGRlc3Ry
dWN0aW9uIG9mIFNWR0ltYWdlQ2FjaGUsCisgICAgd2hpY2ggZG9lc24ndCB3b3JrIG9uIHBsYXRm
b3JtcyB0aGF0IER1bXBSZW5kZXJUcmVlIGxlYWtzIHRoZSBjYWNoZSBpdHNlbGYuPC9wPgorICAg
IDxpbWcgaWQ9J2ltZycgc3JjPSdyZXNvdXJjZXMvY2lyY2xlLnN2Zyc+Cis8L2JvZHk+Cis8L2h0
bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWlt
YWdlLWxlYWstY2FjaGVkLWRhdGEuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxl
CiAgICsgTEYKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>