<?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>38228</bug_id>
          
          <creation_ts>2010-04-27 16:52:31 -0700</creation_ts>
          <short_desc>[chromium] Add WebFileSystem interface and hook up with all FileSystem methods</short_desc>
          <delta_ts>2010-04-30 14:00:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jian Li">jianli</reporter>
          <assigned_to name="Jian Li">jianli</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>218047</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-27 16:52:31 -0700</bug_when>
    <thetext>Add WebFileSystem interface and hook up with all FileSystem methods</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218051</commentid>
    <comment_count>1</comment_count>
      <attachid>54474</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-27 16:55:05 -0700</bug_when>
    <thetext>Created attachment 54474
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218053</commentid>
    <comment_count>2</comment_count>
      <attachid>54475</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-27 16:58:34 -0700</bug_when>
    <thetext>Created attachment 54475
Proposed Patch

Fixed style errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218752</commentid>
    <comment_count>3</comment_count>
      <attachid>54655</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-28 18:32:52 -0700</bug_when>
    <thetext>Created attachment 54655
Proposed Patch

Updated the patch to keep existing file system methods to call WebKitClient methods, instead of new WebFileSystem methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218795</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-28 21:22:57 -0700</bug_when>
    <thetext>Attachment 54655 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1827167</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219100</commentid>
    <comment_count>5</comment_count>
      <attachid>54720</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-29 11:06:30 -0700</bug_when>
    <thetext>Created attachment 54720
Proposed Patch

Fixed chromium bot error by leaving out the calls of WebFileSystem methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219130</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-29 12:09:10 -0700</bug_when>
    <thetext>Attachment 54720 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1849200</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219150</commentid>
    <comment_count>7</comment_count>
      <attachid>54730</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-29 13:11:35 -0700</bug_when>
    <thetext>Created attachment 54730
Proposed Patch

Added the new file not included last time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219155</commentid>
    <comment_count>8</comment_count>
      <attachid>54730</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-04-29 13:33:34 -0700</bug_when>
    <thetext>Comment on attachment 54730
Proposed Patch

WebKit/chromium/public/WebFileSystem.h:61
 +      virtual void closeFile(FileHandle&amp;) = 0;
so closeFile will reset the FileHandle to a special invalid value, but there does not appear to be any method here to initialize a FileHandle to hold the invalid value.  it would be nice if closeFile had some documentation describing this subtle behavior.

WebKit/chromium/public/WebFileSystem.h:49
 +      virtual bool fileExists(const WebString&amp; path) = 0;
please provide default implementations for all of these methods.  that way you can implement ChromiumBridge methods in terms of these without having to land something on the Chromium side.  in general, any method implemented by the embedder should have a default implementation in the WebKit API.

WebKit/chromium/src/ChromiumBridge.cpp:328
 +      return webKitClient()-&gt;filePathToURL(path);
you can modify all of the existing file-related ChromiumBridge methods to first null-test fileSystem().  if that is null, then fallback to the old methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219308</commentid>
    <comment_count>9</comment_count>
      <attachid>54763</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-29 17:59:25 -0700</bug_when>
    <thetext>Created attachment 54763
Proposed Patch

All fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219309</commentid>
    <comment_count>10</comment_count>
      <attachid>54764</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-29 18:00:28 -0700</bug_when>
    <thetext>Created attachment 54764
Proposed Patch

All fixed. Also checked patch option which I forgot to check last time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219311</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-29 18:01:30 -0700</bug_when>
    <thetext>Attachment 54764 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/chromium/src/ChromiumBridge.cpp:274:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebKit/chromium/src/ChromiumBridge.cpp:282:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebKit/chromium/src/ChromiumBridge.cpp:290:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebKit/chromium/src/ChromiumBridge.cpp:298:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebKit/chromium/src/ChromiumBridge.cpp:320:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebKit/chromium/src/ChromiumBridge.cpp:328:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebKit/chromium/src/ChromiumBridge.cpp:336:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebKit/chromium/src/ChromiumBridge.cpp:344:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebKit/chromium/src/ChromiumBridge.cpp:352:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebKit/chromium/src/ChromiumBridge.cpp:360:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 10 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219316</commentid>
    <comment_count>12</comment_count>
      <attachid>54767</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-29 18:19:54 -0700</bug_when>
    <thetext>Created attachment 54767
Proposed Patch

Fixed style errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219317</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-29 18:28:07 -0700</bug_when>
    <thetext>Attachment 54763 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1857203</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219322</commentid>
    <comment_count>14</comment_count>
      <attachid>54770</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-29 18:40:31 -0700</bug_when>
    <thetext>Created attachment 54770
Proposed Patch

Fixed chromium build errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219326</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-29 18:55:24 -0700</bug_when>
    <thetext>Attachment 54767 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1857204</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219346</commentid>
    <comment_count>16</comment_count>
      <attachid>54770</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-04-29 20:32:19 -0700</bug_when>
    <thetext>Comment on attachment 54770
Proposed Patch

WebKit/chromium/public/WebFileSystem.h:60
 +      // Should set the FileHandle to a inavalid value if the file is closed successfully.
inavalid -&gt; invalid

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219608</commentid>
    <comment_count>17</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-30 14:00:06 -0700</bug_when>
    <thetext>Fixed and landed as http://trac.webkit.org/changeset/58599.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54474</attachid>
            <date>2010-04-27 16:55:05 -0700</date>
            <delta_ts>2010-04-27 16:58:34 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>38228</filename>
            <type>text/plain</type>
            <size>13832</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDcxOWE1MC4uNjViMTZlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNC0yNyAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgV2ViRmlsZVN5c3RlbSBpbnRlcmZhY2UgYW5kIGhv
b2sgdXAgd2l0aCBhbGwgRmlsZVN5c3RlbSBtZXRob2RzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgyMjgKKworICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL0Nocm9taXVtQnJpZGdlLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRmls
ZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNsb3NlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWVrRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEZy
b21GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9GaWxlKToKKwogMjAxMC0wNC0yNyAg
S2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgSmlhbiBMaS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21p
dW1CcmlkZ2UuaCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaApp
bmRleCAxZjAwNDBkLi4xMzRlYmMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0Nocm9taXVtQnJpZGdlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJv
bWl1bUJyaWRnZS5oCkBAIC0xMDksNiArMTA5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgc3RhdGljIFN0cmluZyBnZXRBYnNvbHV0ZVBhdGgoY29uc3QgU3RyaW5nJik7CiAgICAg
ICAgIHN0YXRpYyBib29sIGlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogICAgICAgICBzdGF0
aWMgS1VSTCBmaWxlUGF0aFRvVVJMKGNvbnN0IFN0cmluZyYpOworICAgICAgICBzdGF0aWMgUGxh
dGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2Rl
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwor
ICAgICAgICBzdGF0aWMgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9u
ZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4pOworICAgICAgICBzdGF0aWMgYm9vbCB0cnVu
Y2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KTsKKyAgICAgICAg
c3RhdGljIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKTsKKyAgICAgICAgc3RhdGljIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogCiAgICAgICAgIC8vIEZvbnQg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAjaWYgT1MoV0lORE9XUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
RmlsZVN5c3RlbUNocm9taXVtLmNwcAppbmRleCAzMDY3NGQ5Li4zN2RiOGY2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwCkBAIC03Nyw0
ICs3NywyOCBAQCBib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVy
biBDaHJvbWl1bUJyaWRnZTo6ZmlsZUV4aXN0cyhwYXRoKTsKIH0KIAorUGxhdGZvcm1GaWxlSGFu
ZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpIHsKKyAg
ICByZXR1cm4gQ2hyb21pdW1CcmlkZ2U6Om9wZW5GaWxlKHBhdGgsIG1vZGUpOworfQorCit2b2lk
IGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeworICAgIHJldHVybiBDaHJv
bWl1bUJyaWRnZTo6Y2xvc2VGaWxlKGhhbmRsZSk7Cit9CisKK2xvbmcgbG9uZyBzZWVrRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdp
biBvcmlnaW4pIHsKKyAgICByZXR1cm4gQ2hyb21pdW1CcmlkZ2U6OnNlZWtGaWxlKGhhbmRsZSwg
b2Zmc2V0LCBvcmlnaW4pOworfQorCitib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KSB7CisgICAgcmV0dXJuIENocm9taXVtQnJpZGdl
Ojp0cnVuY2F0ZUZpbGUoaGFuZGxlLCBvZmZzZXQpOworfQorCitpbnQgcmVhZEZyb21GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpIHsKKyAgICBy
ZXR1cm4gQ2hyb21pdW1CcmlkZ2U6OnJlYWRGcm9tRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCk7
Cit9CisKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSB7CisgICAgcmV0dXJuIENocm9taXVtQnJpZGdlOjp3cml0
ZVRvRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IDcyMjMzZmQuLmVmYmE5ZTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMyIEBACisyMDEwLTA0LTI3ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1d
IEFkZCBXZWJGaWxlU3lzdGVtIGludGVyZmFjZSBhbmQgaG9vayB1cCB3aXRoIGFsbCBGaWxlU3lz
dGVtIG1ldGhvZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zODIyOAorCisgICAgICAgICogcHVibGljL1dlYkZpbGVTeXN0ZW0uaDogQWRkZWQuCisg
ICAgICAgICogcHVibGljL1dlYktpdENsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRD
bGllbnQ6OmZpbGVTeXN0ZW0pOgorICAgICAgICAqIHNyYy9DaHJvbWl1bUJyaWRnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJyaWRnZTo6ZmlsZUV4aXN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWl1bUJyaWRnZTo6ZGVsZXRlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWl1bUJyaWRnZTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21pdW1CcmlkZ2U6OmdldEZpbGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVt
QnJpZGdlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWl1bUJyaWRnZTo6ZGlyZWN0b3J5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJy
aWRnZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
aXVtQnJpZGdlOjptYWtlQWxsRGlyZWN0b3JpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21p
dW1CcmlkZ2U6OmdldEFic29sdXRlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJy
aWRnZTo6aXNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1CcmlkZ2U6OmZp
bGVQYXRoVG9VUkwpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1CcmlkZ2U6Om9wZW5GaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdlOjpjbG9zZUZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21pdW1CcmlkZ2U6OnNlZWtGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9taXVtQnJpZGdlOjp0cnVuY2F0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21p
dW1CcmlkZ2U6OnJlYWRGcm9tRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJyaWRn
ZTo6d3JpdGVUb0ZpbGUpOgorCiAyMDEwLTA0LTI3ICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtLmggYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZpbGVTeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
Li5hZjFhN2NjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
aWxlU3lzdGVtLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRmlsZVN5c3RlbV9oCisjZGVm
aW5lIFdlYkZpbGVTeXN0ZW1faAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJVUkw7CisKK2NsYXNzIFdl
YkZpbGVTeXN0ZW0geworcHVibGljOgorI2lmZGVmIFdJTjMyCisgICAgdHlwZWRlZiBIQU5ETEUg
RmlsZUhhbmRsZTsKKyNlbHNlCisgICAgdHlwZWRlZiBpbnQgRmlsZUhhbmRsZTsKKyNlbmRpZgor
CisgICAgdmlydHVhbCBib29sIGZpbGVFeGlzdHMoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSA9IDA7
CisgICAgdmlydHVhbCBib29sIGRlbGV0ZUZpbGUoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSA9IDA7
CisgICAgdmlydHVhbCBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFdlYlN0cmluZyYg
cGF0aCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBXZWJTdHJpbmcm
IHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KSA9IDA7CisgICAgdmlydHVhbCBib29sIGdldEZpbGVN
b2RpZmljYXRpb25UaW1lKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgZG91YmxlJiByZXN1bHQpID0g
MDsKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFdlYlN0cmluZyYg
cGF0aCkgPSAwOworICAgIHZpcnR1YWwgV2ViU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGNvbnN0IFdlYlN0cmluZyYgY29tcG9uZW50KSA9IDA7
CisgICAgdmlydHVhbCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBXZWJTdHJpbmcmIHBh
dGgpID0gMDsKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBnZXRBYnNvbHV0ZVBhdGgoY29uc3QgV2Vi
U3RyaW5nJiBwYXRoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGlyZWN0b3J5KGNvbnN0IFdl
YlN0cmluZyYgcGF0aCkgPSAwOworICAgIHZpcnR1YWwgV2ViVVJMIGZpbGVQYXRoVG9VUkwoY29u
c3QgV2ViU3RyaW5nJiBwYXRoKSA9IDA7CisgICAgdmlydHVhbCBGaWxlSGFuZGxlIG9wZW5GaWxl
KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgaW50IG1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VGaWxlKEZpbGVIYW5kbGUmKSA9IDA7CisgICAgdmlydHVhbCBsb25nIGxvbmcgc2Vla0Zp
bGUoRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgaW50IG9yaWdpbikgPSAwOworICAgIHZp
cnR1YWwgYm9vbCB0cnVuY2F0ZUZpbGUoRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCkgPSAw
OworICAgIHZpcnR1YWwgaW50IHJlYWRGcm9tRmlsZShGaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCBpbnQgd3JpdGVUb0ZpbGUoRmlsZUhhbmRsZSwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgfldl
YkZpbGVTeXN0ZW0oKSB7fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaCBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgKaW5kZXggMzhiMTMxZC4uNTQ3NTljZSAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5oCkBAIC00OSw2ICs0OSw3IEBAIGNs
YXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhv
c3RDbGllbnQ7CiBjbGFzcyBXZWJDbGlwYm9hcmQ7CiBjbGFzcyBXZWJDb29raWVKYXI7CitjbGFz
cyBXZWJGaWxlU3lzdGVtOwogY2xhc3MgV2ViR0xFUzJDb250ZXh0OwogY2xhc3MgV2ViR3JhcGhp
Y3NDb250ZXh0M0Q7CiBjbGFzcyBXZWJJbmRleGVkRGF0YWJhc2U7CkBAIC03MCw2ICs3MSw5IEBA
IHB1YmxpYzoKICAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KICAgICB2aXJ0dWFsIFdlYk1p
bWVSZWdpc3RyeSogbWltZVJlZ2lzdHJ5KCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8gTXVzdCBy
ZXR1cm4gbm9uLW51bGwuCisgICAgdmlydHVhbCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtKCkg
eyByZXR1cm4gMDsgfQorCiAgICAgLy8gTWF5IHJldHVybiBudWxsIGlmIHNhbmRib3ggc3VwcG9y
dCBpcyBub3QgbmVjZXNzYXJ5CiAgICAgdmlydHVhbCBXZWJTYW5kYm94U3VwcG9ydCogc2FuZGJv
eFN1cHBvcnQoKSB7IHJldHVybiAwOyB9CiAKQEAgLTk1LDIzICs5OSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVVJMJiB1cmwsIGJv
b2wgaXNMb2NhbFN0b3JhZ2UpIHsgfQogCiAKLSAgICAvLyBGaWxlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIC8v
IFZhcmlvdXMgZmlsZS9kaXJlY3RvcnkgcmVsYXRlZCBmdW5jdGlvbnMuICBUaGVzZSBtYXAgMTox
IHdpdGgKLSAgICAvLyBmdW5jdGlvbnMgaW4gV2ViQ29yZSdzIEZpbGVTeXN0ZW0uaC4KLSAgICB2
aXJ0dWFsIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBXZWJTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGRlbGV0ZUZpbGUoY29uc3QgV2ViU3RyaW5nJiBwYXRo
KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9y
eShjb25zdCBXZWJTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGdldEZpbGVTaXplKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQp
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGdldEZpbGVNb2RpZmljYXRpb25U
aW1lKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgZG91YmxlJiByZXN1bHQpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBXZWJTdHJpbmcm
IHBhdGgpIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcgcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgY29uc3QgV2ViU3Ry
aW5nJiBjb21wb25lbnQpIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBib29s
IG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBXZWJTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0QWJzb2x1dGVQYXRoKGNvbnN0IFdlYlN0cmlu
ZyYgcGF0aCkgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEaXJl
Y3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgV2ViVVJMIGZpbGVQYXRoVG9VUkwoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7IHJldHVybiBX
ZWJVUkwoKTsgfQotCi0KICAgICAvLyBIaXN0b3J5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIFJldHVybnMgdGhl
IGhhc2ggZm9yIHRoZSBnaXZlbiBjYW5vbmljYWxpemVkIFVSTCBmb3IgdXNlIGluIHZpc2l0ZWQK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRnZS5jcHAKaW5kZXggY2ZmZDE2Ni4uNjI5Mzlm
NSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRnZS5jcHAKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRnZS5jcHAKQEAgLTQwLDYgKzQwLDcg
QEAKICNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNsdWRlICJXZWJDdXJzb3JJbmZvLmgi
CiAjaW5jbHVkZSAiV2ViRGF0YS5oIgorI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW0uaCIKICNpbmNs
dWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgogI2luY2x1
ZGUgIldlYkltYWdlLmgiCkBAIC0yNzAsMjggKzI3MSwyOCBAQCB2b2lkIENocm9taXVtQnJpZGdl
OjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogCiBib29sIENocm9taXVtQnJp
ZGdlOjpmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICByZXR1cm4gd2ViS2l0
Q2xpZW50KCktPmZpbGVFeGlzdHMocGF0aCk7CisgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5m
aWxlU3lzdGVtKCktPmZpbGVFeGlzdHMocGF0aCk7CiB9CiAKIGJvb2wgQ2hyb21pdW1CcmlkZ2U6
OmRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiB3ZWJLaXRDbGll
bnQoKS0+ZGVsZXRlRmlsZShwYXRoKTsKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVT
eXN0ZW0oKS0+ZGVsZXRlRmlsZShwYXRoKTsKIH0KIAogYm9vbCBDaHJvbWl1bUJyaWRnZTo6ZGVs
ZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiB3ZWJL
aXRDbGllbnQoKS0+ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7CisgICAgcmV0dXJuIHdlYktp
dENsaWVudCgpLT5maWxlU3lzdGVtKCktPmRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOwogfQog
CiBib29sIENocm9taXVtQnJpZGdlOjpnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxv
bmcgbG9uZyYgcmVzdWx0KQogewotICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+Z2V0RmlsZVNp
emUocGF0aCwgcmVzdWx0KTsKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0o
KS0+Z2V0RmlsZVNpemUocGF0aCwgcmVzdWx0KTsKIH0KIAogYm9vbCBDaHJvbWl1bUJyaWRnZTo6
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHJlc3Vs
dCkKIHsKICAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAoIXdlYktpdENsaWVu
dCgpLT5nZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRpb25UaW1lKSkKKyAg
ICBpZiAoIXdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPmdldEZpbGVNb2RpZmljYXRpb25U
aW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmVzdWx0ID0gc3RhdGljX2Nhc3Q8dGltZV90Pihtb2RpZmljYXRpb25UaW1lKTsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTI5OSwzMiArMzAwLDU2IEBAIGJvb2wgQ2hyb21pdW1CcmlkZ2U6OmdldEZp
bGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiAK
IFN0cmluZyBDaHJvbWl1bUJyaWRnZTo6ZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgp
CiB7Ci0gICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5kaXJlY3RvcnlOYW1lKHBhdGgpOworICAg
IHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5kaXJlY3RvcnlOYW1lKHBhdGgp
OwogfQogCiBTdHJpbmcgQ2hyb21pdW1CcmlkZ2U6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogewotICAgIHJldHVy
biB3ZWJLaXRDbGllbnQoKS0+cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGNvbXBvbmVu
dCk7CisgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChwYXRoLCBjb21wb25lbnQpOwogfQogCiBib29sIENocm9taXVtQnJpZGdl
OjptYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiB3
ZWJLaXRDbGllbnQoKS0+bWFrZUFsbERpcmVjdG9yaWVzKHBhdGgpOworICAgIHJldHVybiB3ZWJL
aXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5tYWtlQWxsRGlyZWN0b3JpZXMocGF0aCk7CiB9CiAK
IFN0cmluZyBDaHJvbWl1bUJyaWRnZTo6Z2V0QWJzb2x1dGVQYXRoKGNvbnN0IFN0cmluZyYgcGF0
aCkKIHsKLSAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmdldEFic29sdXRlUGF0aChwYXRoKTsK
KyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+Z2V0QWJzb2x1dGVQYXRo
KHBhdGgpOwogfQogCiBib29sIENocm9taXVtQnJpZGdlOjppc0RpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5pc0RpcmVjdG9yeShwYXRo
KTsKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+aXNEaXJlY3Rvcnko
cGF0aCk7CiB9CiAKIEtVUkwgQ2hyb21pdW1CcmlkZ2U6OmZpbGVQYXRoVG9VUkwoY29uc3QgU3Ry
aW5nJiBwYXRoKQogewotICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZVBhdGhUb1VSTChw
YXRoKTsKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+ZmlsZVBhdGhU
b1VSTChwYXRoKTsKK30KKworUGxhdGZvcm1GaWxlSGFuZGxlIENocm9taXVtQnJpZGdlOjpvcGVu
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKSB7CisgICAgcmV0dXJu
IHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPm9wZW5GaWxlKHBhdGgsIG1vZGUpOworfQor
Cit2b2lkIENocm9taXVtQnJpZGdlOjpjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5k
bGUpIHsKKyAgICB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5jbG9zZUZpbGUoaGFuZGxl
KTsKK30KKworbG9uZyBsb25nIENocm9taXVtQnJpZGdlOjpzZWVrRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pIHsK
KyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+c2Vla0ZpbGUoaGFuZGxl
LCBvZmZzZXQsIG9yaWdpbik7Cit9CisKK2Jvb2wgQ2hyb21pdW1CcmlkZ2U6OnRydW5jYXRlRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KSB7CisgICAgcmV0
dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPnRydW5jYXRlRmlsZShoYW5kbGUsIG9m
ZnNldCk7Cit9CisKK2ludCBDaHJvbWl1bUJyaWRnZTo6cmVhZEZyb21GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpIHsKKyAgICByZXR1cm4gd2Vi
S2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+cmVhZEZyb21GaWxlKGhhbmRsZSwgZGF0YSwgbGVu
Z3RoKTsKK30KKworaW50IENocm9taXVtQnJpZGdlOjp3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSB7CisgICAgcmV0dXJu
IHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YSwg
bGVuZ3RoKTsKIH0KIAogLy8gRm9udCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo=
</data>
<flag name="commit-queue"
          id="38477"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54475</attachid>
            <date>2010-04-27 16:58:34 -0700</date>
            <delta_ts>2010-04-28 18:32:52 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>38228_2</filename>
            <type>text/plain</type>
            <size>13844</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDcxOWE1MC4uNjViMTZlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNC0yNyAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgV2ViRmlsZVN5c3RlbSBpbnRlcmZhY2UgYW5kIGhv
b2sgdXAgd2l0aCBhbGwgRmlsZVN5c3RlbSBtZXRob2RzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgyMjgKKworICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL0Nocm9taXVtQnJpZGdlLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRmls
ZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNsb3NlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWVrRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEZy
b21GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9GaWxlKToKKwogMjAxMC0wNC0yNyAg
S2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgSmlhbiBMaS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21p
dW1CcmlkZ2UuaCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaApp
bmRleCAxZjAwNDBkLi4xMzRlYmMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0Nocm9taXVtQnJpZGdlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJv
bWl1bUJyaWRnZS5oCkBAIC0xMDksNiArMTA5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgc3RhdGljIFN0cmluZyBnZXRBYnNvbHV0ZVBhdGgoY29uc3QgU3RyaW5nJik7CiAgICAg
ICAgIHN0YXRpYyBib29sIGlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogICAgICAgICBzdGF0
aWMgS1VSTCBmaWxlUGF0aFRvVVJMKGNvbnN0IFN0cmluZyYpOworICAgICAgICBzdGF0aWMgUGxh
dGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2Rl
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwor
ICAgICAgICBzdGF0aWMgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9u
ZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4pOworICAgICAgICBzdGF0aWMgYm9vbCB0cnVu
Y2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KTsKKyAgICAgICAg
c3RhdGljIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKTsKKyAgICAgICAgc3RhdGljIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogCiAgICAgICAgIC8vIEZvbnQg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAjaWYgT1MoV0lORE9XUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
RmlsZVN5c3RlbUNocm9taXVtLmNwcAppbmRleCAzMDY3NGQ5Li45NzVjYWY2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwCkBAIC03Nyw0
ICs3NywzNCBAQCBib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVy
biBDaHJvbWl1bUJyaWRnZTo6ZmlsZUV4aXN0cyhwYXRoKTsKIH0KIAorUGxhdGZvcm1GaWxlSGFu
ZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCit7Cisg
ICAgcmV0dXJuIENocm9taXVtQnJpZGdlOjpvcGVuRmlsZShwYXRoLCBtb2RlKTsKK30KKwordm9p
ZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7CisgICAgcmV0dXJuIENo
cm9taXVtQnJpZGdlOjpjbG9zZUZpbGUoaGFuZGxlKTsKK30KKworbG9uZyBsb25nIHNlZWtGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3Jp
Z2luIG9yaWdpbikKK3sKKyAgICByZXR1cm4gQ2hyb21pdW1CcmlkZ2U6OnNlZWtGaWxlKGhhbmRs
ZSwgb2Zmc2V0LCBvcmlnaW4pOworfQorCitib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KQoreworICAgIHJldHVybiBDaHJvbWl1bUJy
aWRnZTo6dHJ1bmNhdGVGaWxlKGhhbmRsZSwgb2Zmc2V0KTsKK30KKworaW50IHJlYWRGcm9tRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQorewor
ICAgIHJldHVybiBDaHJvbWl1bUJyaWRnZTo6cmVhZEZyb21GaWxlKGhhbmRsZSwgZGF0YSwgbGVu
Z3RoKTsKK30KKworaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgcmV0dXJuIENocm9taXVtQnJpZGdl
Ojp3cml0ZVRvRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDcyMjMzZmQuLmVmYmE5ZTggMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMyIEBACisyMDEwLTA0LTI3ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hy
b21pdW1dIEFkZCBXZWJGaWxlU3lzdGVtIGludGVyZmFjZSBhbmQgaG9vayB1cCB3aXRoIGFsbCBG
aWxlU3lzdGVtIG1ldGhvZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zODIyOAorCisgICAgICAgICogcHVibGljL1dlYkZpbGVTeXN0ZW0uaDogQWRk
ZWQuCisgICAgICAgICogcHVibGljL1dlYktpdENsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJLaXRDbGllbnQ6OmZpbGVTeXN0ZW0pOgorICAgICAgICAqIHNyYy9DaHJvbWl1bUJyaWRnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJyaWRnZTo6ZmlsZUV4aXN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWl1bUJyaWRnZTo6ZGVsZXRlRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWl1bUJyaWRnZTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21pdW1CcmlkZ2U6OmdldEZpbGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9taXVtQnJpZGdlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWl1bUJyaWRnZTo6ZGlyZWN0b3J5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWl1bUJyaWRnZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9taXVtQnJpZGdlOjptYWtlQWxsRGlyZWN0b3JpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21pdW1CcmlkZ2U6OmdldEFic29sdXRlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWl1bUJyaWRnZTo6aXNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1Ccmlk
Z2U6OmZpbGVQYXRoVG9VUkwpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1CcmlkZ2U6Om9w
ZW5GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdlOjpjbG9zZUZpbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1CcmlkZ2U6OnNlZWtGaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9taXVtQnJpZGdlOjp0cnVuY2F0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21pdW1CcmlkZ2U6OnJlYWRGcm9tRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWl1
bUJyaWRnZTo6d3JpdGVUb0ZpbGUpOgorCiAyMDEwLTA0LTI3ICBFdmFuIE1hcnRpbiAgPGV2YW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtLmggYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAw
MDAwMDAwLi5hZjFhN2NjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGaWxlU3lzdGVtLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRmlsZVN5c3RlbV9o
CisjZGVmaW5lIFdlYkZpbGVTeXN0ZW1faAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJVUkw7CisKK2Ns
YXNzIFdlYkZpbGVTeXN0ZW0geworcHVibGljOgorI2lmZGVmIFdJTjMyCisgICAgdHlwZWRlZiBI
QU5ETEUgRmlsZUhhbmRsZTsKKyNlbHNlCisgICAgdHlwZWRlZiBpbnQgRmlsZUhhbmRsZTsKKyNl
bmRpZgorCisgICAgdmlydHVhbCBib29sIGZpbGVFeGlzdHMoY29uc3QgV2ViU3RyaW5nJiBwYXRo
KSA9IDA7CisgICAgdmlydHVhbCBib29sIGRlbGV0ZUZpbGUoY29uc3QgV2ViU3RyaW5nJiBwYXRo
KSA9IDA7CisgICAgdmlydHVhbCBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFdlYlN0
cmluZyYgcGF0aCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBXZWJT
dHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KSA9IDA7CisgICAgdmlydHVhbCBib29sIGdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgZG91YmxlJiByZXN1
bHQpID0gMDsKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFdlYlN0
cmluZyYgcGF0aCkgPSAwOworICAgIHZpcnR1YWwgV2ViU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGNvbnN0IFdlYlN0cmluZyYgY29tcG9uZW50
KSA9IDA7CisgICAgdmlydHVhbCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBXZWJTdHJp
bmcmIHBhdGgpID0gMDsKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBnZXRBYnNvbHV0ZVBhdGgoY29u
c3QgV2ViU3RyaW5nJiBwYXRoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGlyZWN0b3J5KGNv
bnN0IFdlYlN0cmluZyYgcGF0aCkgPSAwOworICAgIHZpcnR1YWwgV2ViVVJMIGZpbGVQYXRoVG9V
UkwoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSA9IDA7CisgICAgdmlydHVhbCBGaWxlSGFuZGxlIG9w
ZW5GaWxlKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgaW50IG1vZGUpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY2xvc2VGaWxlKEZpbGVIYW5kbGUmKSA9IDA7CisgICAgdmlydHVhbCBsb25nIGxvbmcg
c2Vla0ZpbGUoRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgaW50IG9yaWdpbikgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCB0cnVuY2F0ZUZpbGUoRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNl
dCkgPSAwOworICAgIHZpcnR1YWwgaW50IHJlYWRGcm9tRmlsZShGaWxlSGFuZGxlLCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCBpbnQgd3JpdGVUb0ZpbGUoRmlsZUhh
bmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgPSAwOworCitwcm90ZWN0ZWQ6Cisg
ICAgfldlYkZpbGVTeXN0ZW0oKSB7fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaCBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgKaW5kZXggMzhiMTMxZC4uNTQ3
NTljZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAor
KysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5oCkBAIC00OSw2ICs0OSw3
IEBAIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgV2ViQXBwbGljYXRpb25D
YWNoZUhvc3RDbGllbnQ7CiBjbGFzcyBXZWJDbGlwYm9hcmQ7CiBjbGFzcyBXZWJDb29raWVKYXI7
CitjbGFzcyBXZWJGaWxlU3lzdGVtOwogY2xhc3MgV2ViR0xFUzJDb250ZXh0OwogY2xhc3MgV2Vi
R3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBXZWJJbmRleGVkRGF0YWJhc2U7CkBAIC03MCw2ICs3
MSw5IEBAIHB1YmxpYzoKICAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KICAgICB2aXJ0dWFs
IFdlYk1pbWVSZWdpc3RyeSogbWltZVJlZ2lzdHJ5KCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8g
TXVzdCByZXR1cm4gbm9uLW51bGwuCisgICAgdmlydHVhbCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lz
dGVtKCkgeyByZXR1cm4gMDsgfQorCiAgICAgLy8gTWF5IHJldHVybiBudWxsIGlmIHNhbmRib3gg
c3VwcG9ydCBpcyBub3QgbmVjZXNzYXJ5CiAgICAgdmlydHVhbCBXZWJTYW5kYm94U3VwcG9ydCog
c2FuZGJveFN1cHBvcnQoKSB7IHJldHVybiAwOyB9CiAKQEAgLTk1LDIzICs5OSw2IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVVJMJiB1
cmwsIGJvb2wgaXNMb2NhbFN0b3JhZ2UpIHsgfQogCiAKLSAgICAvLyBGaWxlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQot
ICAgIC8vIFZhcmlvdXMgZmlsZS9kaXJlY3RvcnkgcmVsYXRlZCBmdW5jdGlvbnMuICBUaGVzZSBt
YXAgMToxIHdpdGgKLSAgICAvLyBmdW5jdGlvbnMgaW4gV2ViQ29yZSdzIEZpbGVTeXN0ZW0uaC4K
LSAgICB2aXJ0dWFsIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBXZWJTdHJpbmcmIHBhdGgpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGRlbGV0ZUZpbGUoY29uc3QgV2ViU3RyaW5n
JiBwYXRoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBkZWxldGVFbXB0eURp
cmVjdG9yeShjb25zdCBXZWJTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGdldEZpbGVTaXplKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiBy
ZXN1bHQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgZG91YmxlJiByZXN1bHQpIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBXZWJT
dHJpbmcmIHBhdGgpIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBXZWJTdHJp
bmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgY29uc3Qg
V2ViU3RyaW5nJiBjb21wb25lbnQpIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9Ci0gICAgdmlydHVh
bCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBXZWJTdHJpbmcmIHBhdGgpIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0QWJzb2x1dGVQYXRoKGNvbnN0IFdl
YlN0cmluZyYgcGF0aCkgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNEaXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgV2ViVVJMIGZpbGVQYXRoVG9VUkwoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7IHJl
dHVybiBXZWJVUkwoKTsgfQotCi0KICAgICAvLyBIaXN0b3J5IC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIFJldHVy
bnMgdGhlIGhhc2ggZm9yIHRoZSBnaXZlbiBjYW5vbmljYWxpemVkIFVSTCBmb3IgdXNlIGluIHZp
c2l0ZWQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3Bw
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRnZS5jcHAKaW5kZXggY2ZmZDE2Ni4u
MjRmMWJkYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRnZS5j
cHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRnZS5jcHAKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNsdWRlICJXZWJDdXJzb3JJ
bmZvLmgiCiAjaW5jbHVkZSAiV2ViRGF0YS5oIgorI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW0uaCIK
ICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgog
I2luY2x1ZGUgIldlYkltYWdlLmgiCkBAIC0yNzAsMjggKzI3MSwyOCBAQCB2b2lkIENocm9taXVt
QnJpZGdlOjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogCiBib29sIENocm9t
aXVtQnJpZGdlOjpmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICByZXR1cm4g
d2ViS2l0Q2xpZW50KCktPmZpbGVFeGlzdHMocGF0aCk7CisgICAgcmV0dXJuIHdlYktpdENsaWVu
dCgpLT5maWxlU3lzdGVtKCktPmZpbGVFeGlzdHMocGF0aCk7CiB9CiAKIGJvb2wgQ2hyb21pdW1C
cmlkZ2U6OmRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiB3ZWJL
aXRDbGllbnQoKS0+ZGVsZXRlRmlsZShwYXRoKTsKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCkt
PmZpbGVTeXN0ZW0oKS0+ZGVsZXRlRmlsZShwYXRoKTsKIH0KIAogYm9vbCBDaHJvbWl1bUJyaWRn
ZTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVy
biB3ZWJLaXRDbGllbnQoKS0+ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7CisgICAgcmV0dXJu
IHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPmRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgp
OwogfQogCiBib29sIENocm9taXVtQnJpZGdlOjpnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBh
dGgsIGxvbmcgbG9uZyYgcmVzdWx0KQogewotICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+Z2V0
RmlsZVNpemUocGF0aCwgcmVzdWx0KTsKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVT
eXN0ZW0oKS0+Z2V0RmlsZVNpemUocGF0aCwgcmVzdWx0KTsKIH0KIAogYm9vbCBDaHJvbWl1bUJy
aWRnZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3Qm
IHJlc3VsdCkKIHsKICAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAoIXdlYktp
dENsaWVudCgpLT5nZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRpb25UaW1l
KSkKKyAgICBpZiAoIXdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPmdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8dGltZV90Pihtb2RpZmljYXRpb25UaW1lKTsKICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTI5OSwzMiArMzAwLDYyIEBAIGJvb2wgQ2hyb21pdW1CcmlkZ2U6
OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1
bHQpCiAKIFN0cmluZyBDaHJvbWl1bUJyaWRnZTo6ZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcm
IHBhdGgpCiB7Ci0gICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5kaXJlY3RvcnlOYW1lKHBhdGgp
OworICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5kaXJlY3RvcnlOYW1l
KHBhdGgpOwogfQogCiBTdHJpbmcgQ2hyb21pdW1CcmlkZ2U6OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogewotICAg
IHJldHVybiB3ZWJLaXRDbGllbnQoKS0+cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGNv
bXBvbmVudCk7CisgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBjb21wb25lbnQpOwogfQogCiBib29sIENocm9taXVt
QnJpZGdlOjptYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJl
dHVybiB3ZWJLaXRDbGllbnQoKS0+bWFrZUFsbERpcmVjdG9yaWVzKHBhdGgpOworICAgIHJldHVy
biB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5tYWtlQWxsRGlyZWN0b3JpZXMocGF0aCk7
CiB9CiAKIFN0cmluZyBDaHJvbWl1bUJyaWRnZTo6Z2V0QWJzb2x1dGVQYXRoKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKLSAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmdldEFic29sdXRlUGF0aChw
YXRoKTsKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+Z2V0QWJzb2x1
dGVQYXRoKHBhdGgpOwogfQogCiBib29sIENocm9taXVtQnJpZGdlOjppc0RpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5pc0RpcmVjdG9y
eShwYXRoKTsKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+aXNEaXJl
Y3RvcnkocGF0aCk7CiB9CiAKIEtVUkwgQ2hyb21pdW1CcmlkZ2U6OmZpbGVQYXRoVG9VUkwoY29u
c3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZVBhdGhU
b1VSTChwYXRoKTsKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+Zmls
ZVBhdGhUb1VSTChwYXRoKTsKK30KKworUGxhdGZvcm1GaWxlSGFuZGxlIENocm9taXVtQnJpZGdl
OjpvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQoreworICAg
IHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5vcGVuRmlsZShwYXRoLCBtb2Rl
KTsKK30KKwordm9pZCBDaHJvbWl1bUJyaWRnZTo6Y2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSYgaGFuZGxlKQoreworICAgIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPmNsb3NlRmls
ZShoYW5kbGUpOworfQorCitsb25nIGxvbmcgQ2hyb21pdW1CcmlkZ2U6OnNlZWtGaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9y
aWdpbikKK3sKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+c2Vla0Zp
bGUoaGFuZGxlLCBvZmZzZXQsIG9yaWdpbik7Cit9CisKK2Jvb2wgQ2hyb21pdW1CcmlkZ2U6OnRy
dW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KQor
eworICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT50cnVuY2F0ZUZpbGUo
aGFuZGxlLCBvZmZzZXQpOworfQorCitpbnQgQ2hyb21pdW1CcmlkZ2U6OnJlYWRGcm9tRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAg
IHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5yZWFkRnJvbUZpbGUoaGFuZGxl
LCBkYXRhLCBsZW5ndGgpOworfQorCitpbnQgQ2hyb21pdW1CcmlkZ2U6OndyaXRlVG9GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7
CisgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPndyaXRlVG9GaWxlKGhh
bmRsZSwgZGF0YSwgbGVuZ3RoKTsKIH0KIAogLy8gRm9udCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo=
</data>
<flag name="commit-queue"
          id="38479"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54655</attachid>
            <date>2010-04-28 18:32:52 -0700</date>
            <delta_ts>2010-04-29 11:06:30 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>38228_3</filename>
            <type>text/plain</type>
            <size>6386</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTNhYTA2OS4uYzIwYzhlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNC0yOCAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgV2ViRmlsZVN5c3RlbSBpbnRlcmZhY2UgYW5kIGhv
b2sgdXAgd2l0aCBhbGwgRmlsZVN5c3RlbSBtZXRob2RzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgyMjgKKworICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL0Nocm9taXVtQnJpZGdlLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRmls
ZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNsb3NlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWVrRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEZy
b21GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9GaWxlKToKKwogMjAxMC0wNC0yOCAg
TWlrZSBUaG9sZSAgPG10aG9sZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
ayBSb3dlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJy
aWRnZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCmluZGV4
IGU1ODIyNDEuLjZlY2EzZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
Q2hyb21pdW1CcmlkZ2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVt
QnJpZGdlLmgKQEAgLTEwOSw2ICsxMDksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBzdGF0aWMgU3RyaW5nIGdldEFic29sdXRlUGF0aChjb25zdCBTdHJpbmcmKTsKICAgICAgICAg
c3RhdGljIGJvb2wgaXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIHN0YXRpYyBL
VVJMIGZpbGVQYXRoVG9VUkwoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBQbGF0Zm9y
bUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUpOwor
ICAgICAgICBzdGF0aWMgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7CisgICAg
ICAgIHN0YXRpYyBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxv
bmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbik7CisgICAgICAgIHN0YXRpYyBib29sIHRydW5jYXRl
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOworICAgICAgICBzdGF0
aWMgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpOworICAgICAgICBzdGF0aWMgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAKICAgICAgICAgLy8gRm9udCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KICNpZiBPUyhXSU5ET1dTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxl
U3lzdGVtQ2hyb21pdW0uY3BwCmluZGV4IDMwNjc0ZDkuLjk3NWNhZjYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTc3LDQgKzc3
LDM0IEBAIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIENo
cm9taXVtQnJpZGdlOjpmaWxlRXhpc3RzKHBhdGgpOwogfQogCitQbGF0Zm9ybUZpbGVIYW5kbGUg
b3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sKKyAgICBy
ZXR1cm4gQ2hyb21pdW1CcmlkZ2U6Om9wZW5GaWxlKHBhdGgsIG1vZGUpOworfQorCit2b2lkIGNs
b3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICByZXR1cm4gQ2hyb21p
dW1CcmlkZ2U6OmNsb3NlRmlsZShoYW5kbGUpOworfQorCitsb25nIGxvbmcgc2Vla0ZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4g
b3JpZ2luKQoreworICAgIHJldHVybiBDaHJvbWl1bUJyaWRnZTo6c2Vla0ZpbGUoaGFuZGxlLCBv
ZmZzZXQsIG9yaWdpbik7Cit9CisKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgcmV0dXJuIENocm9taXVtQnJpZGdl
Ojp0cnVuY2F0ZUZpbGUoaGFuZGxlLCBvZmZzZXQpOworfQorCitpbnQgcmVhZEZyb21GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAg
cmV0dXJuIENocm9taXVtQnJpZGdlOjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgp
OworfQorCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gQ2hyb21pdW1CcmlkZ2U6Ondy
aXRlVG9GaWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMWE3M2ViNS4uYTg4NTkzYiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTAtMDQtMjggIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1
bV0gQWRkIFdlYkZpbGVTeXN0ZW0gaW50ZXJmYWNlIGFuZCBob29rIHVwIHdpdGggYWxsIEZpbGVT
eXN0ZW0gbWV0aG9kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM4MjI4CisKKyAgICAgICAgRm9yIGV4aXN0aW5nIGZpbGUgc3lzdGVtIG1ldGhvZHMs
IHdlIHN0aWxsIGNhbGwgV2ViS2l0Q2xpZW50IG1ldGhvZHMsIGluc3RlYWQgb2YgV2ViRmlsZVN5
c3RlbSBtZXRob2RzLgorICAgICAgICBXZSB3aWxsIGNoYW5nZSB0aGUgY2FsbHMgb25jZSB0aGUg
Y2hyb21pdW0gc2lkZSBjaGFuZ2UgaXMgbGFuZGVkLiAKKworICAgICAgICAqIHB1YmxpYy9XZWJL
aXRDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q2xpZW50OjpmaWxlU3lzdGVtKToK
KyAgICAgICAgKiBzcmMvQ2hyb21pdW1CcmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21pdW1CcmlkZ2U6Om9wZW5GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdl
OjpjbG9zZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1CcmlkZ2U6OnNlZWtGaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdlOjp0cnVuY2F0ZUZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21pdW1CcmlkZ2U6OnJlYWRGcm9tRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWl1bUJyaWRnZTo6d3JpdGVUb0ZpbGUpOgorCiAyMDEwLTA0LTI4ICBEYXJp
biBGaXNoZXIgIDxkYXJpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2
aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVu
dC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAppbmRleCBmMTk5MDI3
Li5jY2M3OTk2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVu
dC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgKQEAgLTQ5LDYg
KzQ5LDcgQEAgY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBXZWJBcHBsaWNh
dGlvbkNhY2hlSG9zdENsaWVudDsKIGNsYXNzIFdlYkNsaXBib2FyZDsKIGNsYXNzIFdlYkNvb2tp
ZUphcjsKK2NsYXNzIFdlYkZpbGVTeXN0ZW07CiBjbGFzcyBXZWJHTEVTMkNvbnRleHQ7CiBjbGFz
cyBXZWJHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFdlYkluZGV4ZWREYXRhYmFzZTsKQEAgLTcw
LDYgKzcxLDkgQEAgcHVibGljOgogICAgIC8vIE11c3QgcmV0dXJuIG5vbi1udWxsLgogICAgIHZp
cnR1YWwgV2ViTWltZVJlZ2lzdHJ5KiBtaW1lUmVnaXN0cnkoKSB7IHJldHVybiAwOyB9CiAKKyAg
ICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KKyAgICB2aXJ0dWFsIFdlYkZpbGVTeXN0ZW0qIGZp
bGVTeXN0ZW0oKSB7IHJldHVybiAwOyB9CisKICAgICAvLyBNYXkgcmV0dXJuIG51bGwgaWYgc2Fu
ZGJveCBzdXBwb3J0IGlzIG5vdCBuZWNlc3NhcnkKICAgICB2aXJ0dWFsIFdlYlNhbmRib3hTdXBw
b3J0KiBzYW5kYm94U3VwcG9ydCgpIHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRnZS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9taXVtQnJpZGdlLmNwcAppbmRleCBjZmZkMTY2Li41MWRhY2NlIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9taXVtQnJpZGdlLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9taXVtQnJpZGdlLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIldlYkNv
b2tpZUphci5oIgogI2luY2x1ZGUgIldlYkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJXZWJEYXRh
LmgiCisjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKQEAg
LTMyNyw2ICszMjgsMzYgQEAgS1VSTCBDaHJvbWl1bUJyaWRnZTo6ZmlsZVBhdGhUb1VSTChjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlUGF0aFRvVVJM
KHBhdGgpOwogfQogCitQbGF0Zm9ybUZpbGVIYW5kbGUgQ2hyb21pdW1CcmlkZ2U6Om9wZW5GaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCit7CisgICAgcmV0dXJuIHdl
YktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPm9wZW5GaWxlKHBhdGgsIG1vZGUpOworfQorCit2
b2lkIENocm9taXVtQnJpZGdlOjpjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUp
Cit7CisgICAgd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+Y2xvc2VGaWxlKGhhbmRsZSk7
Cit9CisKK2xvbmcgbG9uZyBDaHJvbWl1bUJyaWRnZTo6c2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3JpZ2luKQorewor
ICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5zZWVrRmlsZShoYW5kbGUs
IG9mZnNldCwgb3JpZ2luKTsKK30KKworYm9vbCBDaHJvbWl1bUJyaWRnZTo6dHJ1bmNhdGVGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgcmV0
dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPnRydW5jYXRlRmlsZShoYW5kbGUsIG9m
ZnNldCk7Cit9CisKK2ludCBDaHJvbWl1bUJyaWRnZTo6cmVhZEZyb21GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgcmV0dXJuIHdl
YktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPnJlYWRGcm9tRmlsZShoYW5kbGUsIGRhdGEsIGxl
bmd0aCk7Cit9CisKK2ludCBDaHJvbWl1bUJyaWRnZTo6d3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1
cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+d3JpdGVUb0ZpbGUoaGFuZGxlLCBkYXRh
LCBsZW5ndGgpOworfQorCiAvLyBGb250IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICNpZiBPUyhXSU5ET1dT
KQo=
</data>
<flag name="commit-queue"
          id="38671"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54720</attachid>
            <date>2010-04-29 11:06:30 -0700</date>
            <delta_ts>2010-04-29 13:11:35 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>38228_4</filename>
            <type>text/plain</type>
            <size>6182</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTNhYTA2OS4uYzIwYzhlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNC0yOCAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgV2ViRmlsZVN5c3RlbSBpbnRlcmZhY2UgYW5kIGhv
b2sgdXAgd2l0aCBhbGwgRmlsZVN5c3RlbSBtZXRob2RzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgyMjgKKworICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL0Nocm9taXVtQnJpZGdlLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRmls
ZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNsb3NlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWVrRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEZy
b21GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9GaWxlKToKKwogMjAxMC0wNC0yOCAg
TWlrZSBUaG9sZSAgPG10aG9sZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
ayBSb3dlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJy
aWRnZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCmluZGV4
IGU1ODIyNDEuLjZlY2EzZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
Q2hyb21pdW1CcmlkZ2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVt
QnJpZGdlLmgKQEAgLTEwOSw2ICsxMDksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBzdGF0aWMgU3RyaW5nIGdldEFic29sdXRlUGF0aChjb25zdCBTdHJpbmcmKTsKICAgICAgICAg
c3RhdGljIGJvb2wgaXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIHN0YXRpYyBL
VVJMIGZpbGVQYXRoVG9VUkwoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBQbGF0Zm9y
bUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUpOwor
ICAgICAgICBzdGF0aWMgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7CisgICAg
ICAgIHN0YXRpYyBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxv
bmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbik7CisgICAgICAgIHN0YXRpYyBib29sIHRydW5jYXRl
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOworICAgICAgICBzdGF0
aWMgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpOworICAgICAgICBzdGF0aWMgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAKICAgICAgICAgLy8gRm9udCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KICNpZiBPUyhXSU5ET1dTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxl
U3lzdGVtQ2hyb21pdW0uY3BwCmluZGV4IDMwNjc0ZDkuLjk3NWNhZjYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTc3LDQgKzc3
LDM0IEBAIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIENo
cm9taXVtQnJpZGdlOjpmaWxlRXhpc3RzKHBhdGgpOwogfQogCitQbGF0Zm9ybUZpbGVIYW5kbGUg
b3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sKKyAgICBy
ZXR1cm4gQ2hyb21pdW1CcmlkZ2U6Om9wZW5GaWxlKHBhdGgsIG1vZGUpOworfQorCit2b2lkIGNs
b3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICByZXR1cm4gQ2hyb21p
dW1CcmlkZ2U6OmNsb3NlRmlsZShoYW5kbGUpOworfQorCitsb25nIGxvbmcgc2Vla0ZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4g
b3JpZ2luKQoreworICAgIHJldHVybiBDaHJvbWl1bUJyaWRnZTo6c2Vla0ZpbGUoaGFuZGxlLCBv
ZmZzZXQsIG9yaWdpbik7Cit9CisKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgcmV0dXJuIENocm9taXVtQnJpZGdl
Ojp0cnVuY2F0ZUZpbGUoaGFuZGxlLCBvZmZzZXQpOworfQorCitpbnQgcmVhZEZyb21GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAg
cmV0dXJuIENocm9taXVtQnJpZGdlOjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgp
OworfQorCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gQ2hyb21pdW1CcmlkZ2U6Ondy
aXRlVG9GaWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMWE3M2ViNS4uYTg4NTkzYiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTAtMDQtMjggIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1
bV0gQWRkIFdlYkZpbGVTeXN0ZW0gaW50ZXJmYWNlIGFuZCBob29rIHVwIHdpdGggYWxsIEZpbGVT
eXN0ZW0gbWV0aG9kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM4MjI4CisKKyAgICAgICAgRm9yIGV4aXN0aW5nIGZpbGUgc3lzdGVtIG1ldGhvZHMs
IHdlIHN0aWxsIGNhbGwgV2ViS2l0Q2xpZW50IG1ldGhvZHMsIGluc3RlYWQgb2YgV2ViRmlsZVN5
c3RlbSBtZXRob2RzLgorICAgICAgICBXZSB3aWxsIGNoYW5nZSB0aGUgY2FsbHMgb25jZSB0aGUg
Y2hyb21pdW0gc2lkZSBjaGFuZ2UgaXMgbGFuZGVkLiAKKworICAgICAgICAqIHB1YmxpYy9XZWJL
aXRDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q2xpZW50OjpmaWxlU3lzdGVtKToK
KyAgICAgICAgKiBzcmMvQ2hyb21pdW1CcmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21pdW1CcmlkZ2U6Om9wZW5GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdl
OjpjbG9zZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1CcmlkZ2U6OnNlZWtGaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdlOjp0cnVuY2F0ZUZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21pdW1CcmlkZ2U6OnJlYWRGcm9tRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWl1bUJyaWRnZTo6d3JpdGVUb0ZpbGUpOgorCiAyMDEwLTA0LTI4ICBEYXJp
biBGaXNoZXIgIDxkYXJpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2
aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVu
dC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAppbmRleCBmMTk5MDI3
Li5jY2M3OTk2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVu
dC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgKQEAgLTQ5LDYg
KzQ5LDcgQEAgY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBXZWJBcHBsaWNh
dGlvbkNhY2hlSG9zdENsaWVudDsKIGNsYXNzIFdlYkNsaXBib2FyZDsKIGNsYXNzIFdlYkNvb2tp
ZUphcjsKK2NsYXNzIFdlYkZpbGVTeXN0ZW07CiBjbGFzcyBXZWJHTEVTMkNvbnRleHQ7CiBjbGFz
cyBXZWJHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFdlYkluZGV4ZWREYXRhYmFzZTsKQEAgLTcw
LDYgKzcxLDkgQEAgcHVibGljOgogICAgIC8vIE11c3QgcmV0dXJuIG5vbi1udWxsLgogICAgIHZp
cnR1YWwgV2ViTWltZVJlZ2lzdHJ5KiBtaW1lUmVnaXN0cnkoKSB7IHJldHVybiAwOyB9CiAKKyAg
ICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KKyAgICB2aXJ0dWFsIFdlYkZpbGVTeXN0ZW0qIGZp
bGVTeXN0ZW0oKSB7IHJldHVybiAwOyB9CisKICAgICAvLyBNYXkgcmV0dXJuIG51bGwgaWYgc2Fu
ZGJveCBzdXBwb3J0IGlzIG5vdCBuZWNlc3NhcnkKICAgICB2aXJ0dWFsIFdlYlNhbmRib3hTdXBw
b3J0KiBzYW5kYm94U3VwcG9ydCgpIHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRnZS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9taXVtQnJpZGdlLmNwcAppbmRleCBjZmZkMTY2Li4xZTg4MmJiIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9taXVtQnJpZGdlLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9taXVtQnJpZGdlLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIldlYkNv
b2tpZUphci5oIgogI2luY2x1ZGUgIldlYkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJXZWJEYXRh
LmgiCisjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKQEAg
LTMyNyw2ICszMjgsNDEgQEAgS1VSTCBDaHJvbWl1bUJyaWRnZTo6ZmlsZVBhdGhUb1VSTChjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlUGF0aFRvVVJM
KHBhdGgpOwogfQogCitQbGF0Zm9ybUZpbGVIYW5kbGUgQ2hyb21pdW1CcmlkZ2U6Om9wZW5GaWxl
KGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSkKK3sKKyAgICAvLyBGSVhNRTogdG8gYmUgaW1w
bGVtZW50ZWQuCisgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Cit9CisKK3Zv
aWQgQ2hyb21pdW1CcmlkZ2U6OmNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKQoreworICAg
IC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KK30KKworbG9uZyBsb25nIENocm9taXVtQnJp
ZGdlOjpzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZywgRmlsZVNlZWtPcmln
aW4pCit7CisgICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgorICAgIHJldHVybiAwOwor
fQorCitib29sIENocm9taXVtQnJpZGdlOjp0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
LCBsb25nIGxvbmcpCit7CisgICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgorICAgIHJl
dHVybiBmYWxzZTsKK30KKworaW50IENocm9taXVtQnJpZGdlOjpyZWFkRnJvbUZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlLCBjaGFyKiwgaW50KQoreworICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1l
bnRlZC4KKyAgICByZXR1cm4gMDsKK30KKworaW50IENocm9taXVtQnJpZGdlOjp3cml0ZVRvRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNoYXIqLCBpbnQpCit7CisgICAgLy8gRklYTUU6
IHRvIGJlIGltcGxlbWVudGVkLgorICAgIHJldHVybiAwOworfQorCiAvLyBGb250IC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKICNpZiBPUyhXSU5ET1dTKQo=
</data>
<flag name="commit-queue"
          id="38749"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54730</attachid>
            <date>2010-04-29 13:11:35 -0700</date>
            <delta_ts>2010-04-29 17:59:25 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>38228_5</filename>
            <type>text/plain</type>
            <size>9542</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTNhYTA2OS4uYzIwYzhlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNC0yOCAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgV2ViRmlsZVN5c3RlbSBpbnRlcmZhY2UgYW5kIGhv
b2sgdXAgd2l0aCBhbGwgRmlsZVN5c3RlbSBtZXRob2RzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgyMjgKKworICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL0Nocm9taXVtQnJpZGdlLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRmls
ZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNsb3NlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWVrRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEZy
b21GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9GaWxlKToKKwogMjAxMC0wNC0yOCAg
TWlrZSBUaG9sZSAgPG10aG9sZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
ayBSb3dlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJy
aWRnZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCmluZGV4
IGU1ODIyNDEuLjZlY2EzZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
Q2hyb21pdW1CcmlkZ2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVt
QnJpZGdlLmgKQEAgLTEwOSw2ICsxMDksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBzdGF0aWMgU3RyaW5nIGdldEFic29sdXRlUGF0aChjb25zdCBTdHJpbmcmKTsKICAgICAgICAg
c3RhdGljIGJvb2wgaXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIHN0YXRpYyBL
VVJMIGZpbGVQYXRoVG9VUkwoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBQbGF0Zm9y
bUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUpOwor
ICAgICAgICBzdGF0aWMgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7CisgICAg
ICAgIHN0YXRpYyBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxv
bmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbik7CisgICAgICAgIHN0YXRpYyBib29sIHRydW5jYXRl
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOworICAgICAgICBzdGF0
aWMgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpOworICAgICAgICBzdGF0aWMgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAKICAgICAgICAgLy8gRm9udCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KICNpZiBPUyhXSU5ET1dTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxl
U3lzdGVtQ2hyb21pdW0uY3BwCmluZGV4IDMwNjc0ZDkuLjk3NWNhZjYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTc3LDQgKzc3
LDM0IEBAIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIENo
cm9taXVtQnJpZGdlOjpmaWxlRXhpc3RzKHBhdGgpOwogfQogCitQbGF0Zm9ybUZpbGVIYW5kbGUg
b3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sKKyAgICBy
ZXR1cm4gQ2hyb21pdW1CcmlkZ2U6Om9wZW5GaWxlKHBhdGgsIG1vZGUpOworfQorCit2b2lkIGNs
b3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICByZXR1cm4gQ2hyb21p
dW1CcmlkZ2U6OmNsb3NlRmlsZShoYW5kbGUpOworfQorCitsb25nIGxvbmcgc2Vla0ZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4g
b3JpZ2luKQoreworICAgIHJldHVybiBDaHJvbWl1bUJyaWRnZTo6c2Vla0ZpbGUoaGFuZGxlLCBv
ZmZzZXQsIG9yaWdpbik7Cit9CisKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgcmV0dXJuIENocm9taXVtQnJpZGdl
Ojp0cnVuY2F0ZUZpbGUoaGFuZGxlLCBvZmZzZXQpOworfQorCitpbnQgcmVhZEZyb21GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAg
cmV0dXJuIENocm9taXVtQnJpZGdlOjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgp
OworfQorCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gQ2hyb21pdW1CcmlkZ2U6Ondy
aXRlVG9GaWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMWE3M2ViNS4uNzRiMDk4ZCAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMTAtMDQtMjggIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1
bV0gQWRkIFdlYkZpbGVTeXN0ZW0gaW50ZXJmYWNlIGFuZCBob29rIHVwIHdpdGggYWxsIEZpbGVT
eXN0ZW0gbWV0aG9kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM4MjI4CisKKyAgICAgICAgRm9yIGV4aXN0aW5nIGZpbGUgc3lzdGVtIG1ldGhvZHMs
IHdlIHN0aWxsIGNhbGwgV2ViS2l0Q2xpZW50IG1ldGhvZHMsIGluc3RlYWQgb2YgV2ViRmlsZVN5
c3RlbSBtZXRob2RzLgorICAgICAgICBXZSB3aWxsIGNoYW5nZSB0aGUgY2FsbHMgb25jZSB0aGUg
Y2hyb21pdW0gc2lkZSBjaGFuZ2UgaXMgbGFuZGVkLiAKKworICAgICAgICAqIHB1YmxpYy9XZWJG
aWxlU3lzdGVtLmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJLaXRDbGllbnQuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViS2l0Q2xpZW50OjpmaWxlU3lzdGVtKToKKyAgICAgICAgKiBzcmMv
Q2hyb21pdW1CcmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1CcmlkZ2U6Om9w
ZW5GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdlOjpjbG9zZUZpbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1CcmlkZ2U6OnNlZWtGaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9taXVtQnJpZGdlOjp0cnVuY2F0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21pdW1CcmlkZ2U6OnJlYWRGcm9tRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWl1
bUJyaWRnZTo6d3JpdGVUb0ZpbGUpOgorCiAyMDEwLTA0LTI4ICBEYXJpbiBGaXNoZXIgIDxkYXJp
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaCBiL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAuLmFmMWE3Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVTeXN0ZW0uaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJGaWxlU3lzdGVt
X2gKKyNkZWZpbmUgV2ViRmlsZVN5c3RlbV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0cmluZzsKK2NsYXNzIFdlYlVSTDsKKwor
Y2xhc3MgV2ViRmlsZVN5c3RlbSB7CitwdWJsaWM6CisjaWZkZWYgV0lOMzIKKyAgICB0eXBlZGVm
IEhBTkRMRSBGaWxlSGFuZGxlOworI2Vsc2UKKyAgICB0eXBlZGVmIGludCBGaWxlSGFuZGxlOwor
I2VuZGlmCisKKyAgICB2aXJ0dWFsIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBXZWJTdHJpbmcmIHBh
dGgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRmlsZShjb25zdCBXZWJTdHJpbmcmIHBh
dGgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgV2Vi
U3RyaW5nJiBwYXRoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGdldEZpbGVTaXplKGNvbnN0IFdl
YlN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBkb3VibGUmIHJl
c3VsdCkgPSAwOworICAgIHZpcnR1YWwgV2ViU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgV2Vi
U3RyaW5nJiBwYXRoKSA9IDA7CisgICAgdmlydHVhbCBXZWJTdHJpbmcgcGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgY29uc3QgV2ViU3RyaW5nJiBjb21wb25l
bnQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFdlYlN0
cmluZyYgcGF0aCkgPSAwOworICAgIHZpcnR1YWwgV2ViU3RyaW5nIGdldEFic29sdXRlUGF0aChj
b25zdCBXZWJTdHJpbmcmIHBhdGgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNEaXJlY3Rvcnko
Y29uc3QgV2ViU3RyaW5nJiBwYXRoKSA9IDA7CisgICAgdmlydHVhbCBXZWJVUkwgZmlsZVBhdGhU
b1VSTChjb25zdCBXZWJTdHJpbmcmIHBhdGgpID0gMDsKKyAgICB2aXJ0dWFsIEZpbGVIYW5kbGUg
b3BlbkZpbGUoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBpbnQgbW9kZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBjbG9zZUZpbGUoRmlsZUhhbmRsZSYpID0gMDsKKyAgICB2aXJ0dWFsIGxvbmcgbG9u
ZyBzZWVrRmlsZShGaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBpbnQgb3JpZ2luKSA9IDA7
CisgICAgdmlydHVhbCBib29sIHRydW5jYXRlRmlsZShGaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zm
c2V0KSA9IDA7CisgICAgdmlydHVhbCBpbnQgcmVhZEZyb21GaWxlKEZpbGVIYW5kbGUsIGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIGludCB3cml0ZVRvRmlsZShGaWxl
SGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSA9IDA7CisKK3Byb3RlY3RlZDoK
KyAgICB+V2ViRmlsZVN5c3RlbSgpIHt9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5o
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAppbmRleCBmMTk5MDI3Li5j
Y2M3OTk2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5o
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgKQEAgLTQ5LDYgKzQ5
LDcgQEAgY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBXZWJBcHBsaWNhdGlv
bkNhY2hlSG9zdENsaWVudDsKIGNsYXNzIFdlYkNsaXBib2FyZDsKIGNsYXNzIFdlYkNvb2tpZUph
cjsKK2NsYXNzIFdlYkZpbGVTeXN0ZW07CiBjbGFzcyBXZWJHTEVTMkNvbnRleHQ7CiBjbGFzcyBX
ZWJHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFdlYkluZGV4ZWREYXRhYmFzZTsKQEAgLTcwLDYg
KzcxLDkgQEAgcHVibGljOgogICAgIC8vIE11c3QgcmV0dXJuIG5vbi1udWxsLgogICAgIHZpcnR1
YWwgV2ViTWltZVJlZ2lzdHJ5KiBtaW1lUmVnaXN0cnkoKSB7IHJldHVybiAwOyB9CiAKKyAgICAv
LyBNdXN0IHJldHVybiBub24tbnVsbC4KKyAgICB2aXJ0dWFsIFdlYkZpbGVTeXN0ZW0qIGZpbGVT
eXN0ZW0oKSB7IHJldHVybiAwOyB9CisKICAgICAvLyBNYXkgcmV0dXJuIG51bGwgaWYgc2FuZGJv
eCBzdXBwb3J0IGlzIG5vdCBuZWNlc3NhcnkKICAgICB2aXJ0dWFsIFdlYlNhbmRib3hTdXBwb3J0
KiBzYW5kYm94U3VwcG9ydCgpIHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWl1bUJyaWRnZS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
aXVtQnJpZGdlLmNwcAppbmRleCBjZmZkMTY2Li4xZTg4MmJiIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Nocm9taXVtQnJpZGdlLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Nocm9taXVtQnJpZGdlLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIldlYkNvb2tp
ZUphci5oIgogI2luY2x1ZGUgIldlYkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJXZWJEYXRhLmgi
CisjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKQEAgLTMy
Nyw2ICszMjgsNDEgQEAgS1VSTCBDaHJvbWl1bUJyaWRnZTo6ZmlsZVBhdGhUb1VSTChjb25zdCBT
dHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlUGF0aFRvVVJMKHBh
dGgpOwogfQogCitQbGF0Zm9ybUZpbGVIYW5kbGUgQ2hyb21pdW1CcmlkZ2U6Om9wZW5GaWxlKGNv
bnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSkKK3sKKyAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVt
ZW50ZWQuCisgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Cit9CisKK3ZvaWQg
Q2hyb21pdW1CcmlkZ2U6OmNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKQoreworICAgIC8v
IEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KK30KKworbG9uZyBsb25nIENocm9taXVtQnJpZGdl
OjpzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZywgRmlsZVNlZWtPcmlnaW4p
Cit7CisgICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgorICAgIHJldHVybiAwOworfQor
Citib29sIENocm9taXVtQnJpZGdlOjp0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBs
b25nIGxvbmcpCit7CisgICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgorICAgIHJldHVy
biBmYWxzZTsKK30KKworaW50IENocm9taXVtQnJpZGdlOjpyZWFkRnJvbUZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlLCBjaGFyKiwgaW50KQoreworICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRl
ZC4KKyAgICByZXR1cm4gMDsKK30KKworaW50IENocm9taXVtQnJpZGdlOjp3cml0ZVRvRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNoYXIqLCBpbnQpCit7CisgICAgLy8gRklYTUU6IHRv
IGJlIGltcGxlbWVudGVkLgorICAgIHJldHVybiAwOworfQorCiAvLyBGb250IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKICNpZiBPUyhXSU5ET1dTKQo=
</data>
<flag name="review"
          id="38760"
          type_id="1"
          status="-"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="38761"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>54763</attachid>
            <date>2010-04-29 17:59:25 -0700</date>
            <delta_ts>2010-04-29 18:00:28 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>38228_6</filename>
            <type>application/octet-stream</type>
            <size>13960</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjhlMTQ5ZS4uM2FhNTczZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNC0yOSAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgV2ViRmlsZVN5c3RlbSBpbnRlcmZhY2UgYW5kIGhv
b2sgdXAgd2l0aCBhbGwgRmlsZVN5c3RlbSBtZXRob2RzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgyMjgKKworICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL0Nocm9taXVtQnJpZGdlLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRmls
ZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNsb3NlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWVrRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEZy
b21GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9GaWxlKToKKwogMjAxMC0wNC0yOSAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1
bUJyaWRnZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCmlu
ZGV4IGU1ODIyNDEuLjZlY2EzZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vQ2hyb21pdW1CcmlkZ2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9t
aXVtQnJpZGdlLmgKQEAgLTEwOSw2ICsxMDksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBzdGF0aWMgU3RyaW5nIGdldEFic29sdXRlUGF0aChjb25zdCBTdHJpbmcmKTsKICAgICAg
ICAgc3RhdGljIGJvb2wgaXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIHN0YXRp
YyBLVVJMIGZpbGVQYXRoVG9VUkwoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBQbGF0
Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUp
OworICAgICAgICBzdGF0aWMgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7Cisg
ICAgICAgIHN0YXRpYyBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25n
IGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbik7CisgICAgICAgIHN0YXRpYyBib29sIHRydW5j
YXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOworICAgICAgICBz
dGF0aWMgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpOworICAgICAgICBzdGF0aWMgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAKICAgICAgICAgLy8gRm9udCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KICNpZiBPUyhXSU5ET1dTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9G
aWxlU3lzdGVtQ2hyb21pdW0uY3BwCmluZGV4IDMwNjc0ZDkuLjk3NWNhZjYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTc3LDQg
Kzc3LDM0IEBAIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJu
IENocm9taXVtQnJpZGdlOjpmaWxlRXhpc3RzKHBhdGgpOwogfQogCitQbGF0Zm9ybUZpbGVIYW5k
bGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sKKyAg
ICByZXR1cm4gQ2hyb21pdW1CcmlkZ2U6Om9wZW5GaWxlKHBhdGgsIG1vZGUpOworfQorCit2b2lk
IGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICByZXR1cm4gQ2hy
b21pdW1CcmlkZ2U6OmNsb3NlRmlsZShoYW5kbGUpOworfQorCitsb25nIGxvbmcgc2Vla0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmln
aW4gb3JpZ2luKQoreworICAgIHJldHVybiBDaHJvbWl1bUJyaWRnZTo6c2Vla0ZpbGUoaGFuZGxl
LCBvZmZzZXQsIG9yaWdpbik7Cit9CisKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgcmV0dXJuIENocm9taXVtQnJp
ZGdlOjp0cnVuY2F0ZUZpbGUoaGFuZGxlLCBvZmZzZXQpOworfQorCitpbnQgcmVhZEZyb21GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7Cisg
ICAgcmV0dXJuIENocm9taXVtQnJpZGdlOjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBkYXRhLCBsZW5n
dGgpOworfQorCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gQ2hyb21pdW1CcmlkZ2U6
OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDM4Y2I2MC4uZjYzMGJiMCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDQtMjkgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJv
bWl1bV0gQWRkIFdlYkZpbGVTeXN0ZW0gaW50ZXJmYWNlIGFuZCBob29rIHVwIHdpdGggYWxsIEZp
bGVTeXN0ZW0gbWV0aG9kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4MjI4CisKKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZVN5c3RlbS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViS2l0Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YktpdENsaWVudDo6ZmlsZVN5c3RlbSk6CisgICAgICAgICogc3JjL0Nocm9taXVtQnJpZGdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdlOjpmaWxlRXhpc3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdlOjpkZWxldGVGaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9taXVtQnJpZGdlOjpkZWxldGVFbXB0eURpcmVjdG9yeSk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWl1bUJyaWRnZTo6Z2V0RmlsZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21pdW1CcmlkZ2U6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9taXVtQnJpZGdlOjpkaXJlY3RvcnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
aXVtQnJpZGdlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21pdW1CcmlkZ2U6Om1ha2VBbGxEaXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWl1bUJyaWRnZTo6Z2V0QWJzb2x1dGVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
aXVtQnJpZGdlOjppc0RpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJyaWRn
ZTo6ZmlsZVBhdGhUb1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJyaWRnZTo6b3Bl
bkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1CcmlkZ2U6OmNsb3NlRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJyaWRnZTo6c2Vla0ZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21pdW1CcmlkZ2U6OnRydW5jYXRlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWl1bUJyaWRnZTo6cmVhZEZyb21GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVt
QnJpZGdlOjp3cml0ZVRvRmlsZSk6CisKIDIwMTAtMDQtMjkgIEFudG9uIE11aGluICA8YW50b25t
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaCBiL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAuLjA4NjExOWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVTeXN0ZW0uaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJGaWxlU3lzdGVt
X2gKKyNkZWZpbmUgV2ViRmlsZVN5c3RlbV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNp
bmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYkZpbGVTeXN0ZW0geworcHVibGljOgorI2lmZGVmIFdJTjMyCisg
ICAgdHlwZWRlZiBIQU5ETEUgRmlsZUhhbmRsZTsKKyNlbHNlCisgICAgdHlwZWRlZiBpbnQgRmls
ZUhhbmRsZTsKKyNlbmRpZgorCisgICAgdmlydHVhbCBib29sIGZpbGVFeGlzdHMoY29uc3QgV2Vi
U3RyaW5nJiBwYXRoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBkZWxldGVG
aWxlKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBXZWJTdHJpbmcm
IHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGRvdWJs
ZSYgcmVzdWx0KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgV2ViU3RyaW5nIGRpcmVj
dG9yeU5hbWUoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSAgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0K
KyAgICB2aXJ0dWFsIFdlYlN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgV2Vi
U3RyaW5nJiBwYXRoLCBjb25zdCBXZWJTdHJpbmcmIGNvbXBvbmVudCkgIHsgcmV0dXJuIFdlYlN0
cmluZygpOyB9CisgICAgdmlydHVhbCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBXZWJT
dHJpbmcmIHBhdGgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0
QWJzb2x1dGVQYXRoKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgIHsgcmV0dXJuIFdlYlN0cmluZygp
OyB9CisgICAgdmlydHVhbCBib29sIGlzRGlyZWN0b3J5KGNvbnN0IFdlYlN0cmluZyYgcGF0aCkg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFdlYlVSTCBmaWxlUGF0aFRvVVJMKGNvbnN0
IFdlYlN0cmluZyYgcGF0aCkgIHsgcmV0dXJuIFdlYlVSTCgpOyB9CisgICAgdmlydHVhbCBGaWxl
SGFuZGxlIG9wZW5GaWxlKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgaW50IG1vZGUpICB7IHJldHVy
biBGaWxlSGFuZGxlKCk7IH0KKyAgICAvLyBTaG91bGQgc2V0IHRoZSBGaWxlSGFuZGxlIHRvIGEg
aW5hdmFsaWQgdmFsdWUgaWYgdGhlIGZpbGUgaXMgY2xvc2VkIHN1Y2Nlc3NmdWxseS4KKyAgICB2
aXJ0dWFsIHZvaWQgY2xvc2VGaWxlKEZpbGVIYW5kbGUmKSB7IH0KKyAgICB2aXJ0dWFsIGxvbmcg
bG9uZyBzZWVrRmlsZShGaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBpbnQgb3JpZ2luKSB7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBib29sIHRydW5jYXRlRmlsZShGaWxlSGFuZGxlLCBs
b25nIGxvbmcgb2Zmc2V0KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgaW50IHJlYWRG
cm9tRmlsZShGaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBpbnQgd3JpdGVUb0ZpbGUoRmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkgeyByZXR1cm4gMDsgfQorCitwcm90ZWN0ZWQ6CisgICAgfldlYkZpbGVT
eXN0ZW0oKSB7fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaCBiL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgKaW5kZXggZjE5OTAyNy4uY2NjNzk5NiAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFdl
YkFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGll
bnQ7CiBjbGFzcyBXZWJDbGlwYm9hcmQ7CiBjbGFzcyBXZWJDb29raWVKYXI7CitjbGFzcyBXZWJG
aWxlU3lzdGVtOwogY2xhc3MgV2ViR0xFUzJDb250ZXh0OwogY2xhc3MgV2ViR3JhcGhpY3NDb250
ZXh0M0Q7CiBjbGFzcyBXZWJJbmRleGVkRGF0YWJhc2U7CkBAIC03MCw2ICs3MSw5IEBAIHB1Ymxp
YzoKICAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KICAgICB2aXJ0dWFsIFdlYk1pbWVSZWdp
c3RyeSogbWltZVJlZ2lzdHJ5KCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8gTXVzdCByZXR1cm4g
bm9uLW51bGwuCisgICAgdmlydHVhbCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtKCkgeyByZXR1
cm4gMDsgfQorCiAgICAgLy8gTWF5IHJldHVybiBudWxsIGlmIHNhbmRib3ggc3VwcG9ydCBpcyBu
b3QgbmVjZXNzYXJ5CiAgICAgdmlydHVhbCBXZWJTYW5kYm94U3VwcG9ydCogc2FuZGJveFN1cHBv
cnQoKSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21pdW1CcmlkZ2UuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRnZS5jcHAK
aW5kZXggY2ZmZDE2Ni4uMjZhNmNiNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWl1bUJyaWRnZS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRn
ZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNs
dWRlICJXZWJDdXJzb3JJbmZvLmgiCiAjaW5jbHVkZSAiV2ViRGF0YS5oIgorI2luY2x1ZGUgIldl
YkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldl
YkZyYW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCkBAIC0yNzAsNjEgKzI3MSwxMjYg
QEAgdm9pZCBDaHJvbWl1bUJyaWRnZTo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSkKIAogYm9vbCBDaHJvbWl1bUJyaWRnZTo6ZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgp
CiB7Ci0gICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlRXhpc3RzKHBhdGgpOworICAgIGlm
ICh3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xp
ZW50KCktPmZpbGVTeXN0ZW0oKS0+ZmlsZUV4aXN0cyhwYXRoKTsKKyAgICBlbHNlCisgICAgICAg
IHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZUV4aXN0cyhwYXRoKTsKIH0KIAogYm9vbCBDaHJv
bWl1bUJyaWRnZTo6ZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJu
IHdlYktpdENsaWVudCgpLT5kZWxldGVGaWxlKHBhdGgpOworICAgIGlmICh3ZWJLaXRDbGllbnQo
KS0+ZmlsZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0
ZW0oKS0+ZmlsZUV4aXN0cyhwYXRoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiB3ZWJLaXRD
bGllbnQoKS0+ZmlsZUV4aXN0cyhwYXRoKTsKIH0KIAogYm9vbCBDaHJvbWl1bUJyaWRnZTo6ZGVs
ZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiB3ZWJL
aXRDbGllbnQoKS0+ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7CisgICAgaWYgKHdlYktpdENs
aWVudCgpLT5maWxlU3lzdGVtKCkpCisgICAgICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+Zmls
ZVN5c3RlbSgpLT5kZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKKyAgICBlbHNlCisgICAgICAg
IHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7CiB9CiAK
IGJvb2wgQ2hyb21pdW1CcmlkZ2U6OmdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9u
ZyBsb25nJiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5nZXRGaWxlU2l6
ZShwYXRoLCByZXN1bHQpOworICAgIGlmICh3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpKQor
ICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+Z2V0RmlsZVNpemUo
cGF0aCwgcmVzdWx0KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+
Z2V0RmlsZVNpemUocGF0aCwgcmVzdWx0KTsKIH0KIAogYm9vbCBDaHJvbWl1bUJyaWRnZTo6Z2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHJlc3VsdCkK
IHsKICAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAoIXdlYktpdENsaWVudCgp
LT5nZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRpb25UaW1lKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICh3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpKSB7
CisgICAgICAgIGlmICghd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+Z2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCF3ZWJLaXRDbGllbnQoKS0+Z2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQogICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PHRpbWVfdD4obW9k
aWZpY2F0aW9uVGltZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIFN0cmluZyBDaHJvbWl1bUJy
aWRnZTo6ZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJuIHdl
YktpdENsaWVudCgpLT5kaXJlY3RvcnlOYW1lKHBhdGgpOworICAgIGlmICh3ZWJLaXRDbGllbnQo
KS0+ZmlsZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0
ZW0oKS0+ZGlyZWN0b3J5TmFtZShwYXRoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiB3ZWJL
aXRDbGllbnQoKS0+ZGlyZWN0b3J5TmFtZShwYXRoKTsKIH0KIAogU3RyaW5nIENocm9taXVtQnJp
ZGdlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGNvbXBvbmVudCkKIHsKLSAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChwYXRoLCBjb21wb25lbnQpOworICAgIGlmICh3ZWJLaXRDbGllbnQo
KS0+ZmlsZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0
ZW0oKS0+cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGNvbXBvbmVudCk7CisgICAgZWxz
ZQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChwYXRoLCBjb21wb25lbnQpOwogfQogCiBib29sIENocm9taXVtQnJpZGdlOjptYWtlQWxsRGly
ZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiB3ZWJLaXRDbGllbnQo
KS0+bWFrZUFsbERpcmVjdG9yaWVzKHBhdGgpOworICAgIGlmICh3ZWJLaXRDbGllbnQoKS0+Zmls
ZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+
ZGlyZWN0b3J5TmFtZShwYXRoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiB3ZWJLaXRDbGll
bnQoKS0+ZGlyZWN0b3J5TmFtZShwYXRoKTsKIH0KIAogU3RyaW5nIENocm9taXVtQnJpZGdlOjpn
ZXRBYnNvbHV0ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiB3ZWJLaXRD
bGllbnQoKS0+Z2V0QWJzb2x1dGVQYXRoKHBhdGgpOworICAgIGlmICh3ZWJLaXRDbGllbnQoKS0+
ZmlsZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0o
KS0+Z2V0QWJzb2x1dGVQYXRoKHBhdGgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHdlYktp
dENsaWVudCgpLT5nZXRBYnNvbHV0ZVBhdGgocGF0aCk7CiB9CiAKIGJvb2wgQ2hyb21pdW1Ccmlk
Z2U6OmlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICByZXR1cm4gd2ViS2l0
Q2xpZW50KCktPmlzRGlyZWN0b3J5KHBhdGgpOworICAgIGlmICh3ZWJLaXRDbGllbnQoKS0+Zmls
ZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+
aXNEaXJlY3RvcnkocGF0aCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50
KCktPmlzRGlyZWN0b3J5KHBhdGgpOwogfQogCiBLVVJMIENocm9taXVtQnJpZGdlOjpmaWxlUGF0
aFRvVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCkt
PmZpbGVQYXRoVG9VUkwocGF0aCk7CisgICAgaWYgKHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVt
KCkpCisgICAgICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5maWxlUGF0
aFRvVVJMKHBhdGgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5m
aWxlUGF0aFRvVVJMKHBhdGgpOworfQorCitQbGF0Zm9ybUZpbGVIYW5kbGUgQ2hyb21pdW1Ccmlk
Z2U6Om9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCit7Cisg
ICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPm9wZW5GaWxlKHBhdGgsIG1v
ZGUpOworfQorCit2b2lkIENocm9taXVtQnJpZGdlOjpjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlJiBoYW5kbGUpCit7CisgICAgd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+Y2xvc2VG
aWxlKGhhbmRsZSk7Cit9CisKK2xvbmcgbG9uZyBDaHJvbWl1bUJyaWRnZTo6c2Vla0ZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4g
b3JpZ2luKQoreworICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5zZWVr
RmlsZShoYW5kbGUsIG9mZnNldCwgb3JpZ2luKTsKK30KKworYm9vbCBDaHJvbWl1bUJyaWRnZTo6
dHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQp
Cit7CisgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPnRydW5jYXRlRmls
ZShoYW5kbGUsIG9mZnNldCk7Cit9CisKK2ludCBDaHJvbWl1bUJyaWRnZTo6cmVhZEZyb21GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7Cisg
ICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPnJlYWRGcm9tRmlsZShoYW5k
bGUsIGRhdGEsIGxlbmd0aCk7Cit9CisKK2ludCBDaHJvbWl1bUJyaWRnZTo6d3JpdGVUb0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
K3sKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+d3JpdGVUb0ZpbGUo
aGFuZGxlLCBkYXRhLCBsZW5ndGgpOwogfQogCiAvLyBGb250IC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg==
</data>
<flag name="commit-queue"
          id="38798"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54764</attachid>
            <date>2010-04-29 18:00:28 -0700</date>
            <delta_ts>2010-04-29 18:19:54 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>38228_6</filename>
            <type>text/plain</type>
            <size>13960</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjhlMTQ5ZS4uM2FhNTczZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNC0yOSAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgV2ViRmlsZVN5c3RlbSBpbnRlcmZhY2UgYW5kIGhv
b2sgdXAgd2l0aCBhbGwgRmlsZVN5c3RlbSBtZXRob2RzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgyMjgKKworICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL0Nocm9taXVtQnJpZGdlLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRmls
ZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNsb3NlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWVrRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEZy
b21GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9GaWxlKToKKwogMjAxMC0wNC0yOSAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1
bUJyaWRnZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCmlu
ZGV4IGU1ODIyNDEuLjZlY2EzZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vQ2hyb21pdW1CcmlkZ2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9t
aXVtQnJpZGdlLmgKQEAgLTEwOSw2ICsxMDksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBzdGF0aWMgU3RyaW5nIGdldEFic29sdXRlUGF0aChjb25zdCBTdHJpbmcmKTsKICAgICAg
ICAgc3RhdGljIGJvb2wgaXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIHN0YXRp
YyBLVVJMIGZpbGVQYXRoVG9VUkwoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBQbGF0
Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUp
OworICAgICAgICBzdGF0aWMgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7Cisg
ICAgICAgIHN0YXRpYyBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25n
IGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbik7CisgICAgICAgIHN0YXRpYyBib29sIHRydW5j
YXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOworICAgICAgICBz
dGF0aWMgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpOworICAgICAgICBzdGF0aWMgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAKICAgICAgICAgLy8gRm9udCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KICNpZiBPUyhXSU5ET1dTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9G
aWxlU3lzdGVtQ2hyb21pdW0uY3BwCmluZGV4IDMwNjc0ZDkuLjk3NWNhZjYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTc3LDQg
Kzc3LDM0IEBAIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJu
IENocm9taXVtQnJpZGdlOjpmaWxlRXhpc3RzKHBhdGgpOwogfQogCitQbGF0Zm9ybUZpbGVIYW5k
bGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sKKyAg
ICByZXR1cm4gQ2hyb21pdW1CcmlkZ2U6Om9wZW5GaWxlKHBhdGgsIG1vZGUpOworfQorCit2b2lk
IGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICByZXR1cm4gQ2hy
b21pdW1CcmlkZ2U6OmNsb3NlRmlsZShoYW5kbGUpOworfQorCitsb25nIGxvbmcgc2Vla0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmln
aW4gb3JpZ2luKQoreworICAgIHJldHVybiBDaHJvbWl1bUJyaWRnZTo6c2Vla0ZpbGUoaGFuZGxl
LCBvZmZzZXQsIG9yaWdpbik7Cit9CisKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgcmV0dXJuIENocm9taXVtQnJp
ZGdlOjp0cnVuY2F0ZUZpbGUoaGFuZGxlLCBvZmZzZXQpOworfQorCitpbnQgcmVhZEZyb21GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7Cisg
ICAgcmV0dXJuIENocm9taXVtQnJpZGdlOjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBkYXRhLCBsZW5n
dGgpOworfQorCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gQ2hyb21pdW1CcmlkZ2U6
OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDM4Y2I2MC4uZjYzMGJiMCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDQtMjkgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJv
bWl1bV0gQWRkIFdlYkZpbGVTeXN0ZW0gaW50ZXJmYWNlIGFuZCBob29rIHVwIHdpdGggYWxsIEZp
bGVTeXN0ZW0gbWV0aG9kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4MjI4CisKKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZVN5c3RlbS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViS2l0Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YktpdENsaWVudDo6ZmlsZVN5c3RlbSk6CisgICAgICAgICogc3JjL0Nocm9taXVtQnJpZGdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdlOjpmaWxlRXhpc3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdlOjpkZWxldGVGaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9taXVtQnJpZGdlOjpkZWxldGVFbXB0eURpcmVjdG9yeSk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWl1bUJyaWRnZTo6Z2V0RmlsZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21pdW1CcmlkZ2U6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9taXVtQnJpZGdlOjpkaXJlY3RvcnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
aXVtQnJpZGdlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21pdW1CcmlkZ2U6Om1ha2VBbGxEaXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWl1bUJyaWRnZTo6Z2V0QWJzb2x1dGVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
aXVtQnJpZGdlOjppc0RpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJyaWRn
ZTo6ZmlsZVBhdGhUb1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJyaWRnZTo6b3Bl
bkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1CcmlkZ2U6OmNsb3NlRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJyaWRnZTo6c2Vla0ZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21pdW1CcmlkZ2U6OnRydW5jYXRlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWl1bUJyaWRnZTo6cmVhZEZyb21GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVt
QnJpZGdlOjp3cml0ZVRvRmlsZSk6CisKIDIwMTAtMDQtMjkgIEFudG9uIE11aGluICA8YW50b25t
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaCBiL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAuLjA4NjExOWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVTeXN0ZW0uaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJGaWxlU3lzdGVt
X2gKKyNkZWZpbmUgV2ViRmlsZVN5c3RlbV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNp
bmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYkZpbGVTeXN0ZW0geworcHVibGljOgorI2lmZGVmIFdJTjMyCisg
ICAgdHlwZWRlZiBIQU5ETEUgRmlsZUhhbmRsZTsKKyNlbHNlCisgICAgdHlwZWRlZiBpbnQgRmls
ZUhhbmRsZTsKKyNlbmRpZgorCisgICAgdmlydHVhbCBib29sIGZpbGVFeGlzdHMoY29uc3QgV2Vi
U3RyaW5nJiBwYXRoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBkZWxldGVG
aWxlKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBXZWJTdHJpbmcm
IHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGRvdWJs
ZSYgcmVzdWx0KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgV2ViU3RyaW5nIGRpcmVj
dG9yeU5hbWUoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSAgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0K
KyAgICB2aXJ0dWFsIFdlYlN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgV2Vi
U3RyaW5nJiBwYXRoLCBjb25zdCBXZWJTdHJpbmcmIGNvbXBvbmVudCkgIHsgcmV0dXJuIFdlYlN0
cmluZygpOyB9CisgICAgdmlydHVhbCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBXZWJT
dHJpbmcmIHBhdGgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0
QWJzb2x1dGVQYXRoKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgIHsgcmV0dXJuIFdlYlN0cmluZygp
OyB9CisgICAgdmlydHVhbCBib29sIGlzRGlyZWN0b3J5KGNvbnN0IFdlYlN0cmluZyYgcGF0aCkg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFdlYlVSTCBmaWxlUGF0aFRvVVJMKGNvbnN0
IFdlYlN0cmluZyYgcGF0aCkgIHsgcmV0dXJuIFdlYlVSTCgpOyB9CisgICAgdmlydHVhbCBGaWxl
SGFuZGxlIG9wZW5GaWxlKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgaW50IG1vZGUpICB7IHJldHVy
biBGaWxlSGFuZGxlKCk7IH0KKyAgICAvLyBTaG91bGQgc2V0IHRoZSBGaWxlSGFuZGxlIHRvIGEg
aW5hdmFsaWQgdmFsdWUgaWYgdGhlIGZpbGUgaXMgY2xvc2VkIHN1Y2Nlc3NmdWxseS4KKyAgICB2
aXJ0dWFsIHZvaWQgY2xvc2VGaWxlKEZpbGVIYW5kbGUmKSB7IH0KKyAgICB2aXJ0dWFsIGxvbmcg
bG9uZyBzZWVrRmlsZShGaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBpbnQgb3JpZ2luKSB7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBib29sIHRydW5jYXRlRmlsZShGaWxlSGFuZGxlLCBs
b25nIGxvbmcgb2Zmc2V0KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgaW50IHJlYWRG
cm9tRmlsZShGaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBpbnQgd3JpdGVUb0ZpbGUoRmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkgeyByZXR1cm4gMDsgfQorCitwcm90ZWN0ZWQ6CisgICAgfldlYkZpbGVT
eXN0ZW0oKSB7fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaCBiL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgKaW5kZXggZjE5OTAyNy4uY2NjNzk5NiAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFdl
YkFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGll
bnQ7CiBjbGFzcyBXZWJDbGlwYm9hcmQ7CiBjbGFzcyBXZWJDb29raWVKYXI7CitjbGFzcyBXZWJG
aWxlU3lzdGVtOwogY2xhc3MgV2ViR0xFUzJDb250ZXh0OwogY2xhc3MgV2ViR3JhcGhpY3NDb250
ZXh0M0Q7CiBjbGFzcyBXZWJJbmRleGVkRGF0YWJhc2U7CkBAIC03MCw2ICs3MSw5IEBAIHB1Ymxp
YzoKICAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KICAgICB2aXJ0dWFsIFdlYk1pbWVSZWdp
c3RyeSogbWltZVJlZ2lzdHJ5KCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8gTXVzdCByZXR1cm4g
bm9uLW51bGwuCisgICAgdmlydHVhbCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtKCkgeyByZXR1
cm4gMDsgfQorCiAgICAgLy8gTWF5IHJldHVybiBudWxsIGlmIHNhbmRib3ggc3VwcG9ydCBpcyBu
b3QgbmVjZXNzYXJ5CiAgICAgdmlydHVhbCBXZWJTYW5kYm94U3VwcG9ydCogc2FuZGJveFN1cHBv
cnQoKSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21pdW1CcmlkZ2UuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRnZS5jcHAK
aW5kZXggY2ZmZDE2Ni4uMjZhNmNiNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWl1bUJyaWRnZS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRn
ZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNs
dWRlICJXZWJDdXJzb3JJbmZvLmgiCiAjaW5jbHVkZSAiV2ViRGF0YS5oIgorI2luY2x1ZGUgIldl
YkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldl
YkZyYW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCkBAIC0yNzAsNjEgKzI3MSwxMjYg
QEAgdm9pZCBDaHJvbWl1bUJyaWRnZTo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSkKIAogYm9vbCBDaHJvbWl1bUJyaWRnZTo6ZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgp
CiB7Ci0gICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlRXhpc3RzKHBhdGgpOworICAgIGlm
ICh3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xp
ZW50KCktPmZpbGVTeXN0ZW0oKS0+ZmlsZUV4aXN0cyhwYXRoKTsKKyAgICBlbHNlCisgICAgICAg
IHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZUV4aXN0cyhwYXRoKTsKIH0KIAogYm9vbCBDaHJv
bWl1bUJyaWRnZTo6ZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJu
IHdlYktpdENsaWVudCgpLT5kZWxldGVGaWxlKHBhdGgpOworICAgIGlmICh3ZWJLaXRDbGllbnQo
KS0+ZmlsZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0
ZW0oKS0+ZmlsZUV4aXN0cyhwYXRoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiB3ZWJLaXRD
bGllbnQoKS0+ZmlsZUV4aXN0cyhwYXRoKTsKIH0KIAogYm9vbCBDaHJvbWl1bUJyaWRnZTo6ZGVs
ZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiB3ZWJL
aXRDbGllbnQoKS0+ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7CisgICAgaWYgKHdlYktpdENs
aWVudCgpLT5maWxlU3lzdGVtKCkpCisgICAgICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+Zmls
ZVN5c3RlbSgpLT5kZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKKyAgICBlbHNlCisgICAgICAg
IHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7CiB9CiAK
IGJvb2wgQ2hyb21pdW1CcmlkZ2U6OmdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9u
ZyBsb25nJiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5nZXRGaWxlU2l6
ZShwYXRoLCByZXN1bHQpOworICAgIGlmICh3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpKQor
ICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+Z2V0RmlsZVNpemUo
cGF0aCwgcmVzdWx0KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+
Z2V0RmlsZVNpemUocGF0aCwgcmVzdWx0KTsKIH0KIAogYm9vbCBDaHJvbWl1bUJyaWRnZTo6Z2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHJlc3VsdCkK
IHsKICAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAoIXdlYktpdENsaWVudCgp
LT5nZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRpb25UaW1lKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICh3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpKSB7
CisgICAgICAgIGlmICghd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+Z2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCF3ZWJLaXRDbGllbnQoKS0+Z2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQogICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PHRpbWVfdD4obW9k
aWZpY2F0aW9uVGltZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIFN0cmluZyBDaHJvbWl1bUJy
aWRnZTo6ZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJuIHdl
YktpdENsaWVudCgpLT5kaXJlY3RvcnlOYW1lKHBhdGgpOworICAgIGlmICh3ZWJLaXRDbGllbnQo
KS0+ZmlsZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0
ZW0oKS0+ZGlyZWN0b3J5TmFtZShwYXRoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiB3ZWJL
aXRDbGllbnQoKS0+ZGlyZWN0b3J5TmFtZShwYXRoKTsKIH0KIAogU3RyaW5nIENocm9taXVtQnJp
ZGdlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGNvbXBvbmVudCkKIHsKLSAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChwYXRoLCBjb21wb25lbnQpOworICAgIGlmICh3ZWJLaXRDbGllbnQo
KS0+ZmlsZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0
ZW0oKS0+cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGNvbXBvbmVudCk7CisgICAgZWxz
ZQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChwYXRoLCBjb21wb25lbnQpOwogfQogCiBib29sIENocm9taXVtQnJpZGdlOjptYWtlQWxsRGly
ZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiB3ZWJLaXRDbGllbnQo
KS0+bWFrZUFsbERpcmVjdG9yaWVzKHBhdGgpOworICAgIGlmICh3ZWJLaXRDbGllbnQoKS0+Zmls
ZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+
ZGlyZWN0b3J5TmFtZShwYXRoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiB3ZWJLaXRDbGll
bnQoKS0+ZGlyZWN0b3J5TmFtZShwYXRoKTsKIH0KIAogU3RyaW5nIENocm9taXVtQnJpZGdlOjpn
ZXRBYnNvbHV0ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiB3ZWJLaXRD
bGllbnQoKS0+Z2V0QWJzb2x1dGVQYXRoKHBhdGgpOworICAgIGlmICh3ZWJLaXRDbGllbnQoKS0+
ZmlsZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0o
KS0+Z2V0QWJzb2x1dGVQYXRoKHBhdGgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHdlYktp
dENsaWVudCgpLT5nZXRBYnNvbHV0ZVBhdGgocGF0aCk7CiB9CiAKIGJvb2wgQ2hyb21pdW1Ccmlk
Z2U6OmlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICByZXR1cm4gd2ViS2l0
Q2xpZW50KCktPmlzRGlyZWN0b3J5KHBhdGgpOworICAgIGlmICh3ZWJLaXRDbGllbnQoKS0+Zmls
ZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+
aXNEaXJlY3RvcnkocGF0aCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50
KCktPmlzRGlyZWN0b3J5KHBhdGgpOwogfQogCiBLVVJMIENocm9taXVtQnJpZGdlOjpmaWxlUGF0
aFRvVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCkt
PmZpbGVQYXRoVG9VUkwocGF0aCk7CisgICAgaWYgKHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVt
KCkpCisgICAgICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5maWxlUGF0
aFRvVVJMKHBhdGgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5m
aWxlUGF0aFRvVVJMKHBhdGgpOworfQorCitQbGF0Zm9ybUZpbGVIYW5kbGUgQ2hyb21pdW1Ccmlk
Z2U6Om9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCit7Cisg
ICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPm9wZW5GaWxlKHBhdGgsIG1v
ZGUpOworfQorCit2b2lkIENocm9taXVtQnJpZGdlOjpjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlJiBoYW5kbGUpCit7CisgICAgd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+Y2xvc2VG
aWxlKGhhbmRsZSk7Cit9CisKK2xvbmcgbG9uZyBDaHJvbWl1bUJyaWRnZTo6c2Vla0ZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4g
b3JpZ2luKQoreworICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5zZWVr
RmlsZShoYW5kbGUsIG9mZnNldCwgb3JpZ2luKTsKK30KKworYm9vbCBDaHJvbWl1bUJyaWRnZTo6
dHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQp
Cit7CisgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPnRydW5jYXRlRmls
ZShoYW5kbGUsIG9mZnNldCk7Cit9CisKK2ludCBDaHJvbWl1bUJyaWRnZTo6cmVhZEZyb21GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7Cisg
ICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPnJlYWRGcm9tRmlsZShoYW5k
bGUsIGRhdGEsIGxlbmd0aCk7Cit9CisKK2ludCBDaHJvbWl1bUJyaWRnZTo6d3JpdGVUb0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
K3sKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+d3JpdGVUb0ZpbGUo
aGFuZGxlLCBkYXRhLCBsZW5ndGgpOwogfQogCiAvLyBGb250IC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg==
</data>
<flag name="commit-queue"
          id="38800"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54767</attachid>
            <date>2010-04-29 18:19:54 -0700</date>
            <delta_ts>2010-04-29 18:40:31 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>38228_7</filename>
            <type>text/plain</type>
            <size>13415</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjhlMTQ5ZS4uM2FhNTczZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNC0yOSAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgV2ViRmlsZVN5c3RlbSBpbnRlcmZhY2UgYW5kIGhv
b2sgdXAgd2l0aCBhbGwgRmlsZVN5c3RlbSBtZXRob2RzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgyMjgKKworICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL0Nocm9taXVtQnJpZGdlLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRmls
ZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNsb3NlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWVrRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEZy
b21GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9GaWxlKToKKwogMjAxMC0wNC0yOSAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1
bUJyaWRnZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCmlu
ZGV4IGU1ODIyNDEuLjZlY2EzZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vQ2hyb21pdW1CcmlkZ2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9t
aXVtQnJpZGdlLmgKQEAgLTEwOSw2ICsxMDksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBzdGF0aWMgU3RyaW5nIGdldEFic29sdXRlUGF0aChjb25zdCBTdHJpbmcmKTsKICAgICAg
ICAgc3RhdGljIGJvb2wgaXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIHN0YXRp
YyBLVVJMIGZpbGVQYXRoVG9VUkwoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBQbGF0
Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUp
OworICAgICAgICBzdGF0aWMgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7Cisg
ICAgICAgIHN0YXRpYyBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25n
IGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbik7CisgICAgICAgIHN0YXRpYyBib29sIHRydW5j
YXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOworICAgICAgICBz
dGF0aWMgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpOworICAgICAgICBzdGF0aWMgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAKICAgICAgICAgLy8gRm9udCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KICNpZiBPUyhXSU5ET1dTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9G
aWxlU3lzdGVtQ2hyb21pdW0uY3BwCmluZGV4IDMwNjc0ZDkuLjk3NWNhZjYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTc3LDQg
Kzc3LDM0IEBAIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJu
IENocm9taXVtQnJpZGdlOjpmaWxlRXhpc3RzKHBhdGgpOwogfQogCitQbGF0Zm9ybUZpbGVIYW5k
bGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sKKyAg
ICByZXR1cm4gQ2hyb21pdW1CcmlkZ2U6Om9wZW5GaWxlKHBhdGgsIG1vZGUpOworfQorCit2b2lk
IGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICByZXR1cm4gQ2hy
b21pdW1CcmlkZ2U6OmNsb3NlRmlsZShoYW5kbGUpOworfQorCitsb25nIGxvbmcgc2Vla0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmln
aW4gb3JpZ2luKQoreworICAgIHJldHVybiBDaHJvbWl1bUJyaWRnZTo6c2Vla0ZpbGUoaGFuZGxl
LCBvZmZzZXQsIG9yaWdpbik7Cit9CisKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgcmV0dXJuIENocm9taXVtQnJp
ZGdlOjp0cnVuY2F0ZUZpbGUoaGFuZGxlLCBvZmZzZXQpOworfQorCitpbnQgcmVhZEZyb21GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7Cisg
ICAgcmV0dXJuIENocm9taXVtQnJpZGdlOjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBkYXRhLCBsZW5n
dGgpOworfQorCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gQ2hyb21pdW1CcmlkZ2U6
OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDM4Y2I2MC4uZjYzMGJiMCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDQtMjkgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJv
bWl1bV0gQWRkIFdlYkZpbGVTeXN0ZW0gaW50ZXJmYWNlIGFuZCBob29rIHVwIHdpdGggYWxsIEZp
bGVTeXN0ZW0gbWV0aG9kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4MjI4CisKKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZVN5c3RlbS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViS2l0Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YktpdENsaWVudDo6ZmlsZVN5c3RlbSk6CisgICAgICAgICogc3JjL0Nocm9taXVtQnJpZGdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdlOjpmaWxlRXhpc3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdlOjpkZWxldGVGaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9taXVtQnJpZGdlOjpkZWxldGVFbXB0eURpcmVjdG9yeSk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWl1bUJyaWRnZTo6Z2V0RmlsZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21pdW1CcmlkZ2U6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9taXVtQnJpZGdlOjpkaXJlY3RvcnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
aXVtQnJpZGdlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21pdW1CcmlkZ2U6Om1ha2VBbGxEaXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWl1bUJyaWRnZTo6Z2V0QWJzb2x1dGVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
aXVtQnJpZGdlOjppc0RpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJyaWRn
ZTo6ZmlsZVBhdGhUb1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJyaWRnZTo6b3Bl
bkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1CcmlkZ2U6OmNsb3NlRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJyaWRnZTo6c2Vla0ZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21pdW1CcmlkZ2U6OnRydW5jYXRlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWl1bUJyaWRnZTo6cmVhZEZyb21GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVt
QnJpZGdlOjp3cml0ZVRvRmlsZSk6CisKIDIwMTAtMDQtMjkgIEFudG9uIE11aGluICA8YW50b25t
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaCBiL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAuLjA4NjExOWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVTeXN0ZW0uaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJGaWxlU3lzdGVt
X2gKKyNkZWZpbmUgV2ViRmlsZVN5c3RlbV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNp
bmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYkZpbGVTeXN0ZW0geworcHVibGljOgorI2lmZGVmIFdJTjMyCisg
ICAgdHlwZWRlZiBIQU5ETEUgRmlsZUhhbmRsZTsKKyNlbHNlCisgICAgdHlwZWRlZiBpbnQgRmls
ZUhhbmRsZTsKKyNlbmRpZgorCisgICAgdmlydHVhbCBib29sIGZpbGVFeGlzdHMoY29uc3QgV2Vi
U3RyaW5nJiBwYXRoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBkZWxldGVG
aWxlKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBXZWJTdHJpbmcm
IHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGRvdWJs
ZSYgcmVzdWx0KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgV2ViU3RyaW5nIGRpcmVj
dG9yeU5hbWUoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSAgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0K
KyAgICB2aXJ0dWFsIFdlYlN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgV2Vi
U3RyaW5nJiBwYXRoLCBjb25zdCBXZWJTdHJpbmcmIGNvbXBvbmVudCkgIHsgcmV0dXJuIFdlYlN0
cmluZygpOyB9CisgICAgdmlydHVhbCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBXZWJT
dHJpbmcmIHBhdGgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0
QWJzb2x1dGVQYXRoKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgIHsgcmV0dXJuIFdlYlN0cmluZygp
OyB9CisgICAgdmlydHVhbCBib29sIGlzRGlyZWN0b3J5KGNvbnN0IFdlYlN0cmluZyYgcGF0aCkg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFdlYlVSTCBmaWxlUGF0aFRvVVJMKGNvbnN0
IFdlYlN0cmluZyYgcGF0aCkgIHsgcmV0dXJuIFdlYlVSTCgpOyB9CisgICAgdmlydHVhbCBGaWxl
SGFuZGxlIG9wZW5GaWxlKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgaW50IG1vZGUpICB7IHJldHVy
biBGaWxlSGFuZGxlKCk7IH0KKyAgICAvLyBTaG91bGQgc2V0IHRoZSBGaWxlSGFuZGxlIHRvIGEg
aW5hdmFsaWQgdmFsdWUgaWYgdGhlIGZpbGUgaXMgY2xvc2VkIHN1Y2Nlc3NmdWxseS4KKyAgICB2
aXJ0dWFsIHZvaWQgY2xvc2VGaWxlKEZpbGVIYW5kbGUmKSB7IH0KKyAgICB2aXJ0dWFsIGxvbmcg
bG9uZyBzZWVrRmlsZShGaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBpbnQgb3JpZ2luKSB7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBib29sIHRydW5jYXRlRmlsZShGaWxlSGFuZGxlLCBs
b25nIGxvbmcgb2Zmc2V0KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgaW50IHJlYWRG
cm9tRmlsZShGaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBpbnQgd3JpdGVUb0ZpbGUoRmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkgeyByZXR1cm4gMDsgfQorCitwcm90ZWN0ZWQ6CisgICAgfldlYkZpbGVT
eXN0ZW0oKSB7fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaCBiL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgKaW5kZXggZjE5OTAyNy4uY2NjNzk5NiAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFdl
YkFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGll
bnQ7CiBjbGFzcyBXZWJDbGlwYm9hcmQ7CiBjbGFzcyBXZWJDb29raWVKYXI7CitjbGFzcyBXZWJG
aWxlU3lzdGVtOwogY2xhc3MgV2ViR0xFUzJDb250ZXh0OwogY2xhc3MgV2ViR3JhcGhpY3NDb250
ZXh0M0Q7CiBjbGFzcyBXZWJJbmRleGVkRGF0YWJhc2U7CkBAIC03MCw2ICs3MSw5IEBAIHB1Ymxp
YzoKICAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KICAgICB2aXJ0dWFsIFdlYk1pbWVSZWdp
c3RyeSogbWltZVJlZ2lzdHJ5KCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8gTXVzdCByZXR1cm4g
bm9uLW51bGwuCisgICAgdmlydHVhbCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtKCkgeyByZXR1
cm4gMDsgfQorCiAgICAgLy8gTWF5IHJldHVybiBudWxsIGlmIHNhbmRib3ggc3VwcG9ydCBpcyBu
b3QgbmVjZXNzYXJ5CiAgICAgdmlydHVhbCBXZWJTYW5kYm94U3VwcG9ydCogc2FuZGJveFN1cHBv
cnQoKSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21pdW1CcmlkZ2UuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRnZS5jcHAK
aW5kZXggY2ZmZDE2Ni4uZmIzYjBhYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWl1bUJyaWRnZS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRn
ZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNs
dWRlICJXZWJDdXJzb3JJbmZvLmgiCiAjaW5jbHVkZSAiV2ViRGF0YS5oIgorI2luY2x1ZGUgIldl
YkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldl
YkZyYW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCkBAIC0yNzAsNjMgKzI3MSwxMTgg
QEAgdm9pZCBDaHJvbWl1bUJyaWRnZTo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSkKIAogYm9vbCBDaHJvbWl1bUJyaWRnZTo6ZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgp
CiB7CisgICAgaWYgKHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCkpCisgICAgICAgIHJldHVy
biB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5maWxlRXhpc3RzKHBhdGgpOwogICAgIHJl
dHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZUV4aXN0cyhwYXRoKTsKIH0KIAogYm9vbCBDaHJvbWl1
bUJyaWRnZTo6ZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJuIHdl
YktpdENsaWVudCgpLT5kZWxldGVGaWxlKHBhdGgpOworICAgIGlmICh3ZWJLaXRDbGllbnQoKS0+
ZmlsZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0o
KS0+ZmlsZUV4aXN0cyhwYXRoKTsKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVFeGlz
dHMocGF0aCk7CiB9CiAKIGJvb2wgQ2hyb21pdW1CcmlkZ2U6OmRlbGV0ZUVtcHR5RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKKyAgICBpZiAod2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0
ZW0oKSkKKyAgICAgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPmRlbGV0
ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOwogICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZGVsZXRl
RW1wdHlEaXJlY3RvcnkocGF0aCk7CiB9CiAKIGJvb2wgQ2hyb21pdW1CcmlkZ2U6OmdldEZpbGVT
aXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQpCiB7CisgICAgaWYgKHdl
YktpdENsaWVudCgpLT5maWxlU3lzdGVtKCkpCisgICAgICAgIHJldHVybiB3ZWJLaXRDbGllbnQo
KS0+ZmlsZVN5c3RlbSgpLT5nZXRGaWxlU2l6ZShwYXRoLCByZXN1bHQpOwogICAgIHJldHVybiB3
ZWJLaXRDbGllbnQoKS0+Z2V0RmlsZVNpemUocGF0aCwgcmVzdWx0KTsKIH0KIAogYm9vbCBDaHJv
bWl1bUJyaWRnZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0
aW1lX3QmIHJlc3VsdCkKIHsKICAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAo
IXdlYktpdENsaWVudCgpLT5nZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRp
b25UaW1lKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICh3ZWJLaXRDbGllbnQoKS0+
ZmlsZVN5c3RlbSgpKSB7CisgICAgICAgIGlmICghd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0o
KS0+Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCF3ZWJLaXRD
bGllbnQoKS0+Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIHJlc3VsdCA9IHN0YXRpY19j
YXN0PHRpbWVfdD4obW9kaWZpY2F0aW9uVGltZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIFN0
cmluZyBDaHJvbWl1bUJyaWRnZTo6ZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7
CisgICAgaWYgKHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCkpCisgICAgICAgIHJldHVybiB3
ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5kaXJlY3RvcnlOYW1lKHBhdGgpOwogICAgIHJl
dHVybiB3ZWJLaXRDbGllbnQoKS0+ZGlyZWN0b3J5TmFtZShwYXRoKTsKIH0KIAogU3RyaW5nIENo
cm9taXVtQnJpZGdlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKIHsKKyAgICBpZiAod2ViS2l0Q2xpZW50KCktPmZp
bGVTeXN0ZW0oKSkKKyAgICAgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCkt
PnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBjb21wb25lbnQpOwogICAgIHJldHVybiB3
ZWJLaXRDbGllbnQoKS0+cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGNvbXBvbmVudCk7
CiB9CiAKIGJvb2wgQ2hyb21pdW1CcmlkZ2U6Om1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJp
bmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5tYWtlQWxsRGlyZWN0b3Jp
ZXMocGF0aCk7CisgICAgaWYgKHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCkpCisgICAgICAg
IHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5kaXJlY3RvcnlOYW1lKHBhdGgp
OworICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZGlyZWN0b3J5TmFtZShwYXRoKTsKIH0KIAog
U3RyaW5nIENocm9taXVtQnJpZGdlOjpnZXRBYnNvbHV0ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRo
KQogeworICAgIGlmICh3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpKQorICAgICAgICByZXR1
cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+Z2V0QWJzb2x1dGVQYXRoKHBhdGgpOwog
ICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+Z2V0QWJzb2x1dGVQYXRoKHBhdGgpOwogfQogCiBi
b29sIENocm9taXVtQnJpZGdlOjppc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Cisg
ICAgaWYgKHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCkpCisgICAgICAgIHJldHVybiB3ZWJL
aXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5pc0RpcmVjdG9yeShwYXRoKTsKICAgICByZXR1cm4g
d2ViS2l0Q2xpZW50KCktPmlzRGlyZWN0b3J5KHBhdGgpOwogfQogCiBLVVJMIENocm9taXVtQnJp
ZGdlOjpmaWxlUGF0aFRvVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKKyAgICBpZiAod2ViS2l0
Q2xpZW50KCktPmZpbGVTeXN0ZW0oKSkKKyAgICAgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5m
aWxlU3lzdGVtKCktPmZpbGVQYXRoVG9VUkwocGF0aCk7CiAgICAgcmV0dXJuIHdlYktpdENsaWVu
dCgpLT5maWxlUGF0aFRvVVJMKHBhdGgpOwogfQogCitQbGF0Zm9ybUZpbGVIYW5kbGUgQ2hyb21p
dW1CcmlkZ2U6Om9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUp
Cit7CisgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPm9wZW5GaWxlKHBh
dGgsIG1vZGUpOworfQorCit2b2lkIENocm9taXVtQnJpZGdlOjpjbG9zZUZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlJiBoYW5kbGUpCit7CisgICAgd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+
Y2xvc2VGaWxlKGhhbmRsZSk7Cit9CisKK2xvbmcgbG9uZyBDaHJvbWl1bUJyaWRnZTo6c2Vla0Zp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtP
cmlnaW4gb3JpZ2luKQoreworICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgp
LT5zZWVrRmlsZShoYW5kbGUsIG9mZnNldCwgb3JpZ2luKTsKK30KKworYm9vbCBDaHJvbWl1bUJy
aWRnZTo6dHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBv
ZmZzZXQpCit7CisgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPnRydW5j
YXRlRmlsZShoYW5kbGUsIG9mZnNldCk7Cit9CisKK2ludCBDaHJvbWl1bUJyaWRnZTo6cmVhZEZy
b21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
Cit7CisgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPnJlYWRGcm9tRmls
ZShoYW5kbGUsIGRhdGEsIGxlbmd0aCk7Cit9CisKK2ludCBDaHJvbWl1bUJyaWRnZTo6d3JpdGVU
b0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bmd0aCkKK3sKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+d3JpdGVU
b0ZpbGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgpOworfQorCiAvLyBGb250IC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKICNpZiBPUyhXSU5ET1dTKQo=
</data>
<flag name="commit-queue"
          id="38805"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54770</attachid>
            <date>2010-04-29 18:40:31 -0700</date>
            <delta_ts>2010-04-29 20:32:19 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>38228_8</filename>
            <type>text/plain</type>
            <size>13325</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjhlMTQ5ZS4uM2FhNTczZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNC0yOSAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgV2ViRmlsZVN5c3RlbSBpbnRlcmZhY2UgYW5kIGhv
b2sgdXAgd2l0aCBhbGwgRmlsZVN5c3RlbSBtZXRob2RzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgyMjgKKworICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL0Nocm9taXVtQnJpZGdlLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRmls
ZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNsb3NlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWVrRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEZy
b21GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9GaWxlKToKKwogMjAxMC0wNC0yOSAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1
bUJyaWRnZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCmlu
ZGV4IGU1ODIyNDEuLjZlY2EzZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vQ2hyb21pdW1CcmlkZ2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9t
aXVtQnJpZGdlLmgKQEAgLTEwOSw2ICsxMDksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBzdGF0aWMgU3RyaW5nIGdldEFic29sdXRlUGF0aChjb25zdCBTdHJpbmcmKTsKICAgICAg
ICAgc3RhdGljIGJvb2wgaXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIHN0YXRp
YyBLVVJMIGZpbGVQYXRoVG9VUkwoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBQbGF0
Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUp
OworICAgICAgICBzdGF0aWMgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7Cisg
ICAgICAgIHN0YXRpYyBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25n
IGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbik7CisgICAgICAgIHN0YXRpYyBib29sIHRydW5j
YXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOworICAgICAgICBz
dGF0aWMgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpOworICAgICAgICBzdGF0aWMgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAKICAgICAgICAgLy8gRm9udCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KICNpZiBPUyhXSU5ET1dTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9G
aWxlU3lzdGVtQ2hyb21pdW0uY3BwCmluZGV4IDMwNjc0ZDkuLjk3NWNhZjYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTc3LDQg
Kzc3LDM0IEBAIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJu
IENocm9taXVtQnJpZGdlOjpmaWxlRXhpc3RzKHBhdGgpOwogfQogCitQbGF0Zm9ybUZpbGVIYW5k
bGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sKKyAg
ICByZXR1cm4gQ2hyb21pdW1CcmlkZ2U6Om9wZW5GaWxlKHBhdGgsIG1vZGUpOworfQorCit2b2lk
IGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICByZXR1cm4gQ2hy
b21pdW1CcmlkZ2U6OmNsb3NlRmlsZShoYW5kbGUpOworfQorCitsb25nIGxvbmcgc2Vla0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmln
aW4gb3JpZ2luKQoreworICAgIHJldHVybiBDaHJvbWl1bUJyaWRnZTo6c2Vla0ZpbGUoaGFuZGxl
LCBvZmZzZXQsIG9yaWdpbik7Cit9CisKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgcmV0dXJuIENocm9taXVtQnJp
ZGdlOjp0cnVuY2F0ZUZpbGUoaGFuZGxlLCBvZmZzZXQpOworfQorCitpbnQgcmVhZEZyb21GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7Cisg
ICAgcmV0dXJuIENocm9taXVtQnJpZGdlOjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBkYXRhLCBsZW5n
dGgpOworfQorCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gQ2hyb21pdW1CcmlkZ2U6
OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDM4Y2I2MC4uZjYzMGJiMCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDQtMjkgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJv
bWl1bV0gQWRkIFdlYkZpbGVTeXN0ZW0gaW50ZXJmYWNlIGFuZCBob29rIHVwIHdpdGggYWxsIEZp
bGVTeXN0ZW0gbWV0aG9kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4MjI4CisKKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZVN5c3RlbS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViS2l0Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YktpdENsaWVudDo6ZmlsZVN5c3RlbSk6CisgICAgICAgICogc3JjL0Nocm9taXVtQnJpZGdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdlOjpmaWxlRXhpc3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdlOjpkZWxldGVGaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9taXVtQnJpZGdlOjpkZWxldGVFbXB0eURpcmVjdG9yeSk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWl1bUJyaWRnZTo6Z2V0RmlsZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21pdW1CcmlkZ2U6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9taXVtQnJpZGdlOjpkaXJlY3RvcnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
aXVtQnJpZGdlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21pdW1CcmlkZ2U6Om1ha2VBbGxEaXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWl1bUJyaWRnZTo6Z2V0QWJzb2x1dGVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
aXVtQnJpZGdlOjppc0RpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJyaWRn
ZTo6ZmlsZVBhdGhUb1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJyaWRnZTo6b3Bl
bkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1CcmlkZ2U6OmNsb3NlRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bUJyaWRnZTo6c2Vla0ZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21pdW1CcmlkZ2U6OnRydW5jYXRlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWl1bUJyaWRnZTo6cmVhZEZyb21GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVt
QnJpZGdlOjp3cml0ZVRvRmlsZSk6CisKIDIwMTAtMDQtMjkgIEFudG9uIE11aGluICA8YW50b25t
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaCBiL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAuLjA4NjExOWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVTeXN0ZW0uaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJGaWxlU3lzdGVt
X2gKKyNkZWZpbmUgV2ViRmlsZVN5c3RlbV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNp
bmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYkZpbGVTeXN0ZW0geworcHVibGljOgorI2lmZGVmIFdJTjMyCisg
ICAgdHlwZWRlZiBIQU5ETEUgRmlsZUhhbmRsZTsKKyNlbHNlCisgICAgdHlwZWRlZiBpbnQgRmls
ZUhhbmRsZTsKKyNlbmRpZgorCisgICAgdmlydHVhbCBib29sIGZpbGVFeGlzdHMoY29uc3QgV2Vi
U3RyaW5nJiBwYXRoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBkZWxldGVG
aWxlKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBXZWJTdHJpbmcm
IHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGRvdWJs
ZSYgcmVzdWx0KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgV2ViU3RyaW5nIGRpcmVj
dG9yeU5hbWUoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSAgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0K
KyAgICB2aXJ0dWFsIFdlYlN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgV2Vi
U3RyaW5nJiBwYXRoLCBjb25zdCBXZWJTdHJpbmcmIGNvbXBvbmVudCkgIHsgcmV0dXJuIFdlYlN0
cmluZygpOyB9CisgICAgdmlydHVhbCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBXZWJT
dHJpbmcmIHBhdGgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0
QWJzb2x1dGVQYXRoKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgIHsgcmV0dXJuIFdlYlN0cmluZygp
OyB9CisgICAgdmlydHVhbCBib29sIGlzRGlyZWN0b3J5KGNvbnN0IFdlYlN0cmluZyYgcGF0aCkg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFdlYlVSTCBmaWxlUGF0aFRvVVJMKGNvbnN0
IFdlYlN0cmluZyYgcGF0aCkgIHsgcmV0dXJuIFdlYlVSTCgpOyB9CisgICAgdmlydHVhbCBGaWxl
SGFuZGxlIG9wZW5GaWxlKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgaW50IG1vZGUpICB7IHJldHVy
biBGaWxlSGFuZGxlKCk7IH0KKyAgICAvLyBTaG91bGQgc2V0IHRoZSBGaWxlSGFuZGxlIHRvIGEg
aW5hdmFsaWQgdmFsdWUgaWYgdGhlIGZpbGUgaXMgY2xvc2VkIHN1Y2Nlc3NmdWxseS4KKyAgICB2
aXJ0dWFsIHZvaWQgY2xvc2VGaWxlKEZpbGVIYW5kbGUmKSB7IH0KKyAgICB2aXJ0dWFsIGxvbmcg
bG9uZyBzZWVrRmlsZShGaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBpbnQgb3JpZ2luKSB7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBib29sIHRydW5jYXRlRmlsZShGaWxlSGFuZGxlLCBs
b25nIGxvbmcgb2Zmc2V0KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgaW50IHJlYWRG
cm9tRmlsZShGaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBpbnQgd3JpdGVUb0ZpbGUoRmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkgeyByZXR1cm4gMDsgfQorCitwcm90ZWN0ZWQ6CisgICAgfldlYkZpbGVT
eXN0ZW0oKSB7fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaCBiL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgKaW5kZXggZjE5OTAyNy4uY2NjNzk5NiAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFdl
YkFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGll
bnQ7CiBjbGFzcyBXZWJDbGlwYm9hcmQ7CiBjbGFzcyBXZWJDb29raWVKYXI7CitjbGFzcyBXZWJG
aWxlU3lzdGVtOwogY2xhc3MgV2ViR0xFUzJDb250ZXh0OwogY2xhc3MgV2ViR3JhcGhpY3NDb250
ZXh0M0Q7CiBjbGFzcyBXZWJJbmRleGVkRGF0YWJhc2U7CkBAIC03MCw2ICs3MSw5IEBAIHB1Ymxp
YzoKICAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KICAgICB2aXJ0dWFsIFdlYk1pbWVSZWdp
c3RyeSogbWltZVJlZ2lzdHJ5KCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8gTXVzdCByZXR1cm4g
bm9uLW51bGwuCisgICAgdmlydHVhbCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtKCkgeyByZXR1
cm4gMDsgfQorCiAgICAgLy8gTWF5IHJldHVybiBudWxsIGlmIHNhbmRib3ggc3VwcG9ydCBpcyBu
b3QgbmVjZXNzYXJ5CiAgICAgdmlydHVhbCBXZWJTYW5kYm94U3VwcG9ydCogc2FuZGJveFN1cHBv
cnQoKSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21pdW1CcmlkZ2UuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRnZS5jcHAK
aW5kZXggY2ZmZDE2Ni4uYTBlOGQzYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWl1bUJyaWRnZS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUJyaWRn
ZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNs
dWRlICJXZWJDdXJzb3JJbmZvLmgiCiAjaW5jbHVkZSAiV2ViRGF0YS5oIgorI2luY2x1ZGUgIldl
YkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldl
YkZyYW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCkBAIC0yNzAsNjMgKzI3MSwxMTgg
QEAgdm9pZCBDaHJvbWl1bUJyaWRnZTo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSkKIAogYm9vbCBDaHJvbWl1bUJyaWRnZTo6ZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgp
CiB7CisgICAgaWYgKHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCkpCisgICAgICAgIHJldHVy
biB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5maWxlRXhpc3RzKHBhdGgpOwogICAgIHJl
dHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZUV4aXN0cyhwYXRoKTsKIH0KIAogYm9vbCBDaHJvbWl1
bUJyaWRnZTo6ZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgaWYgKHdlYktp
dENsaWVudCgpLT5maWxlU3lzdGVtKCkpCisgICAgICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+
ZmlsZVN5c3RlbSgpLT5kZWxldGVGaWxlKHBhdGgpOwogICAgIHJldHVybiB3ZWJLaXRDbGllbnQo
KS0+ZGVsZXRlRmlsZShwYXRoKTsKIH0KIAogYm9vbCBDaHJvbWl1bUJyaWRnZTo6ZGVsZXRlRW1w
dHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGlmICh3ZWJLaXRDbGllbnQo
KS0+ZmlsZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0
ZW0oKS0+ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7CiAgICAgcmV0dXJuIHdlYktpdENsaWVu
dCgpLT5kZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKIH0KIAogYm9vbCBDaHJvbWl1bUJyaWRn
ZTo6Z2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdCkKIHsK
KyAgICBpZiAod2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKSkKKyAgICAgICAgcmV0dXJuIHdl
YktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPmdldEZpbGVTaXplKHBhdGgsIHJlc3VsdCk7CiAg
ICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5nZXRGaWxlU2l6ZShwYXRoLCByZXN1bHQpOwogfQog
CiBib29sIENocm9taXVtQnJpZGdlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJp
bmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQogewogICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1l
OwotICAgIGlmICghd2ViS2l0Q2xpZW50KCktPmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgs
IG1vZGlmaWNhdGlvblRpbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHdlYktp
dENsaWVudCgpLT5maWxlU3lzdGVtKCkpIHsKKyAgICAgICAgaWYgKCF3ZWJLaXRDbGllbnQoKS0+
ZmlsZVN5c3RlbSgpLT5nZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRpb25U
aW1lKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiAoIXdlYktpdENsaWVudCgpLT5nZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmlj
YXRpb25UaW1lKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgcmVzdWx0
ID0gc3RhdGljX2Nhc3Q8dGltZV90Pihtb2RpZmljYXRpb25UaW1lKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogU3RyaW5nIENocm9taXVtQnJpZGdlOjpkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKKyAgICBpZiAod2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKSkKKyAgICAg
ICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPmRpcmVjdG9yeU5hbWUocGF0
aCk7CiAgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5kaXJlY3RvcnlOYW1lKHBhdGgpOwogfQog
CiBTdHJpbmcgQ2hyb21pdW1CcmlkZ2U6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogeworICAgIGlmICh3ZWJLaXRD
bGllbnQoKS0+ZmlsZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZp
bGVTeXN0ZW0oKS0+cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGNvbXBvbmVudCk7CiAg
ICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5wYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwg
Y29tcG9uZW50KTsKIH0KIAogYm9vbCBDaHJvbWl1bUJyaWRnZTo6bWFrZUFsbERpcmVjdG9yaWVz
KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKKyAgICBpZiAod2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0
ZW0oKSkKKyAgICAgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPm1ha2VB
bGxEaXJlY3RvcmllcyhwYXRoKTsKICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPm1ha2VBbGxE
aXJlY3RvcmllcyhwYXRoKTsKIH0KIAogU3RyaW5nIENocm9taXVtQnJpZGdlOjpnZXRBYnNvbHV0
ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGlmICh3ZWJLaXRDbGllbnQoKS0+Zmls
ZVN5c3RlbSgpKQorICAgICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+
Z2V0QWJzb2x1dGVQYXRoKHBhdGgpOwogICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+Z2V0QWJz
b2x1dGVQYXRoKHBhdGgpOwogfQogCiBib29sIENocm9taXVtQnJpZGdlOjppc0RpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgaWYgKHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVt
KCkpCisgICAgICAgIHJldHVybiB3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5pc0RpcmVj
dG9yeShwYXRoKTsKICAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmlzRGlyZWN0b3J5KHBhdGgp
OwogfQogCiBLVVJMIENocm9taXVtQnJpZGdlOjpmaWxlUGF0aFRvVVJMKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKKyAgICBpZiAod2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKSkKKyAgICAgICAg
cmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPmZpbGVQYXRoVG9VUkwocGF0aCk7
CiAgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5maWxlUGF0aFRvVVJMKHBhdGgpOwogfQogCitQ
bGF0Zm9ybUZpbGVIYW5kbGUgQ2hyb21pdW1CcmlkZ2U6Om9wZW5GaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCit7CisgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5m
aWxlU3lzdGVtKCktPm9wZW5GaWxlKHBhdGgsIG1vZGUpOworfQorCit2b2lkIENocm9taXVtQnJp
ZGdlOjpjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7CisgICAgd2ViS2l0
Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+Y2xvc2VGaWxlKGhhbmRsZSk7Cit9CisKK2xvbmcgbG9u
ZyBDaHJvbWl1bUJyaWRnZTo6c2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9u
ZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3JpZ2luKQoreworICAgIHJldHVybiB3ZWJL
aXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5zZWVrRmlsZShoYW5kbGUsIG9mZnNldCwgb3JpZ2lu
KTsKK30KKworYm9vbCBDaHJvbWl1bUJyaWRnZTo6dHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgcmV0dXJuIHdlYktpdENsaWVu
dCgpLT5maWxlU3lzdGVtKCktPnRydW5jYXRlRmlsZShoYW5kbGUsIG9mZnNldCk7Cit9CisKK2lu
dCBDaHJvbWl1bUJyaWRnZTo6cmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5m
aWxlU3lzdGVtKCktPnJlYWRGcm9tRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCk7Cit9CisKK2lu
dCBDaHJvbWl1bUJyaWRnZTo6d3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50
KCktPmZpbGVTeXN0ZW0oKS0+d3JpdGVUb0ZpbGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgpOworfQor
CiAvLyBGb250IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICNpZiBPUyhXSU5ET1dTKQo=
</data>
<flag name="review"
          id="38808"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="38809"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>