<?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>77238</bug_id>
          
          <creation_ts>2012-01-27 13:02:38 -0800</creation_ts>
          <short_desc>Add Plumbing to get graphics error messages to JS Console</short_desc>
          <delta_ts>2012-01-31 09:39:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</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>0</everconfirmed>
          <reporter name="Gregg Tavares">gman</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>fishd</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>544292</commentid>
    <comment_count>0</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-01-27 13:02:38 -0800</bug_when>
    <thetext>Add Plumming to get graphics error messages to JS Console</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544294</commentid>
    <comment_count>1</comment_count>
      <attachid>124356</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-01-27 13:03:47 -0800</bug_when>
    <thetext>Created attachment 124356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544297</commentid>
    <comment_count>2</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-01-27 13:05:27 -0800</bug_when>
    <thetext>Hope this is good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544303</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-27 13:07:32 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544337</commentid>
    <comment_count>4</comment_count>
      <attachid>124363</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-01-27 13:55:44 -0800</bug_when>
    <thetext>Created attachment 124363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544442</commentid>
    <comment_count>5</comment_count>
      <attachid>124363</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-27 15:31:48 -0800</bug_when>
    <thetext>Comment on attachment 124363
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=124363&amp;action=review

&gt; Source/WebKit/chromium/public/platform/WebGraphicsContext3D.h:121
&gt; +    class WebGraphicsErrorMessageCallback {

WebKit already has a way to write to the console.  Why do you need this?
See DOMWindow::console().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544452</commentid>
    <comment_count>6</comment_count>
      <attachid>124363</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-01-27 15:40:26 -0800</bug_when>
    <thetext>Comment on attachment 124363
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=124363&amp;action=review

&gt;&gt; Source/WebKit/chromium/public/platform/WebGraphicsContext3D.h:121
&gt;&gt; +    class WebGraphicsErrorMessageCallback {
&gt; 
&gt; WebKit already has a way to write to the console.  Why do you need this?
&gt; See DOMWindow::console().

The intent is to allow deeper layers of Chromium&apos;s graphics stack to call back up and print detailed error messages to the console.

Is there way to do this entirely on the Chromium side? How could we get from the WebGraphicsContext3DCommandBufferImpl to a WebFrame?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544492</commentid>
    <comment_count>7</comment_count>
      <attachid>124363</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-27 16:11:54 -0800</bug_when>
    <thetext>Comment on attachment 124363
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=124363&amp;action=review

&gt;&gt;&gt; Source/WebKit/chromium/public/platform/WebGraphicsContext3D.h:121
&gt;&gt;&gt; +    class WebGraphicsErrorMessageCallback {
&gt;&gt; 
&gt;&gt; WebKit already has a way to write to the console.  Why do you need this?
&gt;&gt; See DOMWindow::console().
&gt; 
&gt; The intent is to allow deeper layers of Chromium&apos;s graphics stack to call back up and print detailed error messages to the console.
&gt; 
&gt; Is there way to do this entirely on the Chromium side? How could we get from the WebGraphicsContext3DCommandBufferImpl to a WebFrame?

Oh, sorry, I had the interfaces inverted in my head.  This makes sense now.

Yes, plumbing through here makes more sense than trying to grovel around
in the renderer for the associated WebFrame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544556</commentid>
    <comment_count>8</comment_count>
      <attachid>124363</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-01-27 18:01:10 -0800</bug_when>
    <thetext>Comment on attachment 124363
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=124363&amp;action=review

Looks fine to me. Could you please add a little more detail to the bug report about the goal of this patch? Thanks.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

You&apos;ll need to remove this line in order for the commit queue to process the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544576</commentid>
    <comment_count>9</comment_count>
      <attachid>124417</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-01-27 18:21:47 -0800</bug_when>
    <thetext>Created attachment 124417
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544582</commentid>
    <comment_count>10</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2012-01-27 18:36:28 -0800</bug_when>
    <thetext>This patch is to allow the graphics system, which may be running in another process, the get errors back up to the WebGLRenderingContext so it can send those errors to the JS console.

Since the errors are generated asynchronously we need way to get them back into the class that called them.  There is one issue in that we can&apos;t currently associate which line of JavaScript issued the offending command but at least this way the developer will see the errors.

The implementation does return a 32bit id for each error so if we wanted to, in the future, we could add a function, GraphicsContext3D::setDebugId(int id) or similar after which all commands that generate errors would return that id. We could then associate those ids with some javascript data to lookup the correct lines.

I suspect doing that would be somewhat slow so it would probably be best disabled by default and only enabled through some kind of developer facing option.

In the meantime, at least with these errors plummed through devs can see their program is doing something wrong. Most errors also have a function name associated with them which probably makes them pretty easy to find even without the line number.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545653</commentid>
    <comment_count>11</comment_count>
      <attachid>124417</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-01-30 17:44:39 -0800</bug_when>
    <thetext>Comment on attachment 124417
Patch

Looks great. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545731</commentid>
    <comment_count>12</comment_count>
      <attachid>124417</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 19:11:06 -0800</bug_when>
    <thetext>Comment on attachment 124417
Patch

Clearing flags on attachment: 124417

Committed r106320: &lt;http://trac.webkit.org/changeset/106320&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545732</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 19:11:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546167</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-01-31 09:39:09 -0800</bug_when>
    <thetext>I can’t help thinking that “plumming” is referring to some sort of drive-by fruiting.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124356</attachid>
            <date>2012-01-27 13:03:47 -0800</date>
            <delta_ts>2012-01-27 13:55:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77238-20120127130346.patch</filename>
            <type>text/plain</type>
            <size>14078</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVhNmRkMzhjMzRmYmYz
MDI0MDA2NGJiNWRhZTM5Y2NmZWU3ZTdjOS4uM2FiZmNkZWNkNzlhODY5ZTU0NjAxODg5ZDZhOWZk
ZmZlYWU5YzkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTAxLTI3ICBHcmVn
ZyBUYXZhcmVzICA8Z21hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIFBsdW1taW5nIHRv
IGdldCBncmFwaGljcyBlcnJvciBtZXNzYWdlcyB0byBKUyBDb25zb2xlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzIzOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQor
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjazo6b25FcnJvck1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdl
Q2FsbGJhY2s6On5XZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6aW5p
dGlhbGl6ZU5ld0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp+V2ViR0xSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkdMUmVuZGVyaW5nQ29udGV4dCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAg
KEVycm9yTWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpFcnJvck1lc3NhZ2VDYWxsYmFjazo6fkVycm9yTWVzc2FnZUNhbGxiYWNrKToKKyAgICAg
ICAgKEdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpzZXRFcnJvck1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNldEVycm9yTWVzc2FnZUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmUpOgor
CiAyMDEyLTAxLTI3ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgQ3Jhc2ggaW4gRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggOTVlMjE0Mjk3Mjk1Y2I3MTZhMjY4MDk0MGQ0Mjg3NmM4MzAy
MWY3YS4uNWM5MWQwOWMzYTg1ZTJmZTgyNjRjOTVlNzg2ZGEwOTZmM2Q1YjcyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0wMS0yNyAgR3JlZ2cgVGF2
YXJlcyAgPGdtYW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGQgUGx1bW1pbmcgdG8gZ2V0IGdy
YXBoaWNzIGVycm9yIG1lc3NhZ2VzIHRvIEpTIENvbnNvbGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViR3JhcGhpY3ND
b250ZXh0M0QuaDoKKyAgICAgICAgKFdlYkdyYXBoaWNzRXJyb3JNZXNzYWdlQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6V2ViR3JhcGhpY3NFcnJvck1l
c3NhZ2VDYWxsYmFjazo6fldlYkdyYXBoaWNzRXJyb3JNZXNzYWdlQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRDo6c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIHNyYy9HcmFwaGlj
c0NvbnRleHQzRENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChH
cmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlcjo6fkdyYXBoaWNzRXJyb3JNZXNzYWdl
Q2FsbGJhY2tBZGFwdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzRXJyb3JNZXNzYWdl
Q2FsbGJhY2tBZGFwdGVyOjpHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlcjo6b25F
cnJvck1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NFcnJvck1lc3NhZ2VDYWxs
YmFja0FkYXB0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKiBzcmMvR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKCk6CisK
IDIwMTItMDEtMjYgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtDaHJvbWl1bV0gQ2xlYW51cCBvZiBXZWJQb3B1cE1lbnVJbXBsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAwNDU2
NjdiYzZhZGE1MjRlOTcxMmIzOWRmMjVjOGM1YWYzOWY2ZjE2Li45MTc2YTJkYTQ0ZmQ2ODlkMjIx
YmE2MTM4NGE3NTY5ZjY0ZjQxNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM3NCw2ICszNzQsMTUgQEAgcHJp
dmF0ZToKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIG1fY29udGV4dDsKIH07CiAKK2NsYXNz
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrIDogcHVibGljIEdyYXBo
aWNzQ29udGV4dDNEOjpFcnJvck1lc3NhZ2VDYWxsYmFjayB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgV2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdlQ2FsbGJhY2soV2ViR0xSZW5kZXJp
bmdDb250ZXh0KiBjYikgOiBtX2NvbnRleHQoY2IpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvbkVy
cm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEdDM0RpbnQpIHsgbV9jb250ZXh0LT5w
cmludFdhcm5pbmdUb0NvbnNvbGUobWVzc2FnZSk7IH0KKyAgICB2aXJ0dWFsIH5XZWJHTFJlbmRl
cmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjaygpIHsgfQorcHJpdmF0ZToKKyAgICBXZWJH
TFJlbmRlcmluZ0NvbnRleHQqIG1fY29udGV4dDsKK307CisKIFBhc3NPd25QdHI8V2ViR0xSZW5k
ZXJpbmdDb250ZXh0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShIVE1MQ2FudmFzRWxl
bWVudCogY2FudmFzLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKiBhdHRycykKIHsKICAgICBIb3N0
V2luZG93KiBob3N0V2luZG93ID0gY2FudmFzLT5kb2N1bWVudCgpLT52aWV3KCktPnJvb3QoKS0+
aG9zdFdpbmRvdygpOwpAQCAtNTAwLDYgKzUwOSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAw
LCBjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKTsKIAogICAgIG1fY29udGV4
dC0+c2V0Q29udGV4dExvc3RDYWxsYmFjayhhZG9wdFB0cihuZXcgV2ViR0xSZW5kZXJpbmdDb250
ZXh0TG9zdENhbGxiYWNrKHRoaXMpKSk7CisgICAgbV9jb250ZXh0LT5zZXRFcnJvck1lc3NhZ2VD
YWxsYmFjayhhZG9wdFB0cihuZXcgV2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdlQ2Fs
bGJhY2sodGhpcykpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNldHVwRmxh
Z3MoKQpAQCAtNTQ4LDYgKzU1OCw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6fldlYkdMUmVu
ZGVyaW5nQ29udGV4dCgpCiAKICAgICBkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCk7CiAgICAg
bV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKG51bGxwdHIpOworICAgIG1fY29udGV4
dC0+c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2sobnVsbHB0cik7CiAgICAgbV9jb250ZXh0R3JvdXAt
PnJlbW92ZUNvbnRleHQodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggNTU1MDM2MDFhZmY4ZjhmOThmODQy
MzBjMmRiYWQ2YTgwNjQ4ZDY5Yi4uMTgyOTFmZGQ2ZjIzZmU0MzU5MzBjOWJhZDI3NjYxOWI4ZjU1
ODc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgKQEAgLTMyMiw2ICszMjIsNyBAQCBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNz
IE9FU1ZlcnRleEFycmF5T2JqZWN0OwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTERlYnVnU2hhZGVy
czsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM7CisgICAgZnJpZW5k
IGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrOwogCiAgICAg
V2ViR0xSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50KiwgUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4sIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKICAgICB2b2lk
IGluaXRpYWxpemVOZXdDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCBkZmViYmJhOWIwMmQ4NzI2YzMw
MGYzMTk3ZGRjMTk5YjI0OWU5OTM1Li4zNGM1NDlhYjQ4NzNjMmIxOWVlZTM1N2YzZjIyZmI0NWRl
ZTc1ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmgKQEAgLTQ1NCw3ICs0NTQsMTQgQEAgcHVibGljOgogICAgICAgICB2
aXJ0dWFsIH5Db250ZXh0TG9zdENhbGxiYWNrKCkge30KICAgICB9OwogCisgICAgY2xhc3MgRXJy
b3JNZXNzYWdlQ2FsbGJhY2sgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB2b2lkIG9u
RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgR0MzRGludCBpZCkgPSAwOworICAg
ICAgICB2aXJ0dWFsIH5FcnJvck1lc3NhZ2VDYWxsYmFjaygpIHsgfQorICAgIH07CisKICAgICB2
b2lkIHNldENvbnRleHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250ZXh0TG9zdENhbGxiYWNr
Pik7CisgICAgdm9pZCBzZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhQYXNzT3duUHRyPEVycm9yTWVz
c2FnZUNhbGxiYWNrPik7CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY3JlYXRlKEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBSZW5kZXJTdHlsZSA9IFJlbmRlck9m
ZnNjcmVlbik7CiAgICAgfkdyYXBoaWNzQ29udGV4dDNEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dDNEQ2Fpcm8uY3BwCmluZGV4IGI1ZTEyMzFkMjA3YzlkMzI5MmEzMTgxNmJkYjgxZGVhYjhjZGM4
YTkuLmM4NWFhYjQxNjU4NmIyZTBiNzFhMDc0ZTZjODlmNTZjM2QwZmY1MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCkBAIC0xMTUsNiArMTE1LDEwIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnNldENvbnRleHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250ZXh0TG9z
dENhbGxiYWNrPikKIHsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0RXJyb3JNZXNz
YWdlQ2FsbGJhY2soUGFzc093blB0cjxFcnJvck1lc3NhZ2VDYWxsYmFjaz4pCit7Cit9CisKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiBQbGF0Zm9ybUxheWVyKiBHcmFwaGljc0Nv
bnRleHQzRDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNw
cAppbmRleCBkNDUyMzVlMTRjYTVmMjVhNjhhZWQ4NDNiMDcyNzhmZTE0MWY4ZmE3Li5lM2U4MmY5
OTg1N2I0MzExZTBlNWRiNWQ2NWQwNDRlM2E1NmE5MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVm
bC5jcHAKQEAgLTgzNiw2ICs4MzYsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0Q29u
dGV4dExvc3RDYWxsYmFjayhQYXNzT3duUHRyPENvbnRleHRMb3N0Q2FsbGJhY2s+KQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNldEVycm9yTWVz
c2FnZUNhbGxiYWNrKFBhc3NPd25QdHI8RXJyb3JNZXNzYWdlQ2FsbGJhY2s+KQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0
YShJbWFnZSogaW1hZ2UsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgYm9vbCBwcmVt
dWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUsIFZlY3Rvcjx1aW50OF90PiYgb3V0cHV0VmVjdG9y
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCA5MTczYTVkY2M4YzcxM2ZhM2NkMGY0M2Nk
YTkyZTRmYzFjOTE4NzlkLi40OTViY2FkZDMyN2MwN2M4MTBjZjAzYjY1ZjNlNzBlOTFlYmY5NTgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtMTYzOSw2ICsxNjM5LDEwIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnNldENvbnRleHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250ZXh0
TG9zdENhbGxiYWNrPikKIHsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0RXJyb3JN
ZXNzYWdlQ2FsbGJhY2soUGFzc093blB0cjxFcnJvck1lc3NhZ2VDYWxsYmFjaz4pCit7Cit9CisK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJHcmFwaGljc0NvbnRleHQzRC5oCmlu
ZGV4IDM4MTE0MzZjMjc4ZDVmMWNkZDdmZmNjMjg2MzA5MGEwYzlhOTlhYjYuLjAzNzg5ZDAwMTJh
OGVjZmQ5NzE3NWE1N2UyOWVlNmM1OWUwOTgzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aApAQCAtMTE4LDYgKzExOCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfldlYkdyYXBo
aWNzQ29udGV4dExvc3RDYWxsYmFjaygpIHsgfQogICAgIH07CiAKKyAgICBjbGFzcyBXZWJHcmFw
aGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwg
dm9pZCBvbkVycm9yTWVzc2FnZShjb25zdCBXZWJTdHJpbmcmLCBXR0MzRGludCkgPSAwOworICAg
ICAgICB2aXJ0dWFsIH5XZWJHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrKCkgeyB9CisgICAg
fTsKKwogICAgIGNsYXNzIFdlYkdyYXBoaWNzU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQ0hS
T01JVU0gewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnND
b21wbGV0ZSgpID0gMDsKQEAgLTM2OSw2ICszNzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZVRleHR1cmUoV2ViR0xJZCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldENv
bnRleHRMb3N0Q2FsbGJhY2soV2ViR3JhcGhpY3NDb250ZXh0TG9zdENhbGxiYWNrKiBjYWxsYmFj
aykge30KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2soV2ViR3JhcGhp
Y3NFcnJvck1lc3NhZ2VDYWxsYmFjayogY2FsbGJhY2spIHsgfQogICAgIC8vIEdMX0FSQl9yb2J1
c3RuZXNzCiAgICAgLy8KICAgICAvLyBUaGlzIGVudHJ5IHBvaW50IG11c3QgcHJvdmlkZSBzbGln
aHRseSBkaWZmZXJlbnQgc2VtYW50aWNzIHRoYW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKaW5kZXggYmVlYjk0
YjY1OGMwNWRiYzhkMTJkYWM1MmVkNjlmZWYzNDllZmU2ZC4uMmQzMmQxY2RkMDJlZTQ1MDkzNTU5
N2M3NDkxY2VhNzM0ZTk2ZmI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKQEAgLTEwMzIsNiArMTAzMiw3
IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQz
RDo6QXR0cmlidXRlcywgSG9zdFdpbmRvdyosCiBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNz
Q29udGV4dDNEKCkKIHsKICAgICBtX3ByaXZhdGUtPnNldENvbnRleHRMb3N0Q2FsbGJhY2sobnVs
bHB0cik7CisgICAgbV9wcml2YXRlLT5zZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhudWxscHRyKTsK
ICAgICBtX3ByaXZhdGUtPnNldFN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0NIUk9NSVVNKG51
bGxwdHIpOwogfQogCkBAIC0xMjY4LDYgKzEyNjksNyBAQCBERUxFR0FURV9UT19JTlRFUk5BTF8x
KHN5bnRoZXNpemVHTEVycm9yLCBHQzNEZW51bSkKIERFTEVHQVRFX1RPX0lOVEVSTkFMX1IoZ2V0
RXh0ZW5zaW9ucywgRXh0ZW5zaW9uczNEKikKIAogREVMRUdBVEVfVE9fSU5URVJOQUxfMShzZXRD
b250ZXh0TG9zdENhbGxiYWNrLCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEOjpDb250ZXh0
TG9zdENhbGxiYWNrPikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoc2V0RXJyb3JNZXNzYWdlQ2Fs
bGJhY2ssIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q6OkVycm9yTWVzc2FnZUNhbGxiYWNr
PikKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0TG9zdENhbGxiYWNrQWRhcHRlciA6IHB1YmxpYyBX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpXZWJHcmFwaGljc0NvbnRleHRMb3N0Q2FsbGJh
Y2sgewogcHVibGljOgpAQCAtMTI5Niw2ICsxMjk4LDMzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpzZXRDb250ZXh0TG9zdENhbGxiYWNrKFBhc3NPd25QdHI8R3JhcGhpY3NDb250
ZXh0CiAgICAgbV9pbXBsLT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKG1fY29udGV4dExvc3RDYWxs
YmFja0FkYXB0ZXIuZ2V0KCkpOwogfQogCitjbGFzcyBHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxi
YWNrQWRhcHRlciA6IHB1YmxpYyBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpXZWJHcmFw
aGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgb25F
cnJvck1lc3NhZ2UoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBXZWJLaXQ6OldHQzNEaW50KTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRl
cj4gY3JlYXRlKFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q6OkVycm9yTWVzc2FnZUNhbGxi
YWNrPik7CisgICAgdmlydHVhbCB+R3JhcGhpY3NFcnJvck1lc3NhZ2VDYWxsYmFja0FkYXB0ZXIo
KSB7IH0KK3ByaXZhdGU6CisgICAgR3JhcGhpY3NFcnJvck1lc3NhZ2VDYWxsYmFja0FkYXB0ZXIo
UGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRDo6RXJyb3JNZXNzYWdlQ2FsbGJhY2s+IGNiKSA6
IG1fZXJyb3JNZXNzYWdlQ2FsbGJhY2soY2IpIHsgfQorICAgIE93blB0cjxHcmFwaGljc0NvbnRl
eHQzRDo6RXJyb3JNZXNzYWdlQ2FsbGJhY2s+IG1fZXJyb3JNZXNzYWdlQ2FsbGJhY2s7Cit9Owor
Cit2b2lkIEdyYXBoaWNzRXJyb3JNZXNzYWdlQ2FsbGJhY2tBZGFwdGVyOjpvbkVycm9yTWVzc2Fn
ZShjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgbWVzc2FnZSwgV2ViS2l0OjpXR0MzRGludCBpZCkK
K3sKKyAgICBpZiAobV9lcnJvck1lc3NhZ2VDYWxsYmFjaykKKyAgICAgICAgbV9lcnJvck1lc3Nh
Z2VDYWxsYmFjay0+b25FcnJvck1lc3NhZ2UobWVzc2FnZSwgaWQpOworfQorCitQYXNzT3duUHRy
PEdyYXBoaWNzRXJyb3JNZXNzYWdlQ2FsbGJhY2tBZGFwdGVyPiBHcmFwaGljc0Vycm9yTWVzc2Fn
ZUNhbGxiYWNrQWRhcHRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q6OkVy
cm9yTWVzc2FnZUNhbGxiYWNrPiBjYikKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIoY2IuZ2V0KCkg
PyBuZXcgR3JhcGhpY3NFcnJvck1lc3NhZ2VDYWxsYmFja0FkYXB0ZXIoY2IpIDogMCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpzZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhQ
YXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEOjpFcnJvck1lc3NhZ2VDYWxsYmFjaz4gY2IpCit7
CisgICAgbV9lcnJvck1lc3NhZ2VDYWxsYmFja0FkYXB0ZXIgPSBHcmFwaGljc0Vycm9yTWVzc2Fn
ZUNhbGxiYWNrQWRhcHRlcjo6Y3JlYXRlKGNiKTsKKyAgICBtX2ltcGwtPnNldEVycm9yTWVzc2Fn
ZUNhbGxiYWNrKG1fZXJyb3JNZXNzYWdlQ2FsbGJhY2tBZGFwdGVyLmdldCgpKTsKK30KKwogYm9v
bCBHcmFwaGljc0NvbnRleHQzRDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+aXNHTEVTMkNvbXBsaWFudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAppbmRleCAyODA3OWMz
MTMzMmEwNWQzZjE5MTEyNjQ1Y2E0OWZhMmZlOWIwNGUzLi5mMmQ0OWExMzJjNjQ1Yzg4YjBhMjc5
MWFkMzEyM2Y1NjViOWIxMjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBE
cmF3aW5nQnVmZmVyOwogY2xhc3MgRXh0ZW5zaW9uczNEQ2hyb21pdW07CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RTd2Fw
QnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVyOworY2xhc3MgR3JhcGhpY3NFcnJvck1lc3Nh
Z2VDYWxsYmFja0FkYXB0ZXI7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSB7CiBw
dWJsaWM6CkBAIC0yNzMsNiArMjc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3ludGhlc2l6ZUdM
RXJyb3IoR0MzRGVudW0gZXJyb3IpOwogCiAgICAgdm9pZCBzZXRDb250ZXh0TG9zdENhbGxiYWNr
KFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q6OkNvbnRleHRMb3N0Q2FsbGJhY2s+KTsKKyAg
ICB2b2lkIHNldEVycm9yTWVzc2FnZUNhbGxiYWNrKFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0
M0Q6OkVycm9yTWVzc2FnZUNhbGxiYWNrPik7CiAKICAgICAvLyBFeHRlbnNpb25zM0Qgc3VwcG9y
dC4KICAgICBFeHRlbnNpb25zM0QqIGdldEV4dGVuc2lvbnMoKTsKQEAgLTMyMSw2ICszMjMsNyBA
QCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiBtX2lt
cGw7CiAgICAgT3duUHRyPEV4dGVuc2lvbnMzRENocm9taXVtPiBtX2V4dGVuc2lvbnM7CiAgICAg
T3duUHRyPEdyYXBoaWNzQ29udGV4dExvc3RDYWxsYmFja0FkYXB0ZXI+IG1fY29udGV4dExvc3RD
YWxsYmFja0FkYXB0ZXI7CisgICAgT3duUHRyPEdyYXBoaWNzRXJyb3JNZXNzYWdlQ2FsbGJhY2tB
ZGFwdGVyPiBtX2Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlcjsKICAgICBPd25QdHI8R3JhcGhp
Y3NDb250ZXh0M0RTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVyPiBtX3N3YXBCdWZm
ZXJzQ29tcGxldGVDYWxsYmFja0FkYXB0ZXI7CiAgICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogbV93
ZWJWaWV3SW1wbDsKICAgICBib29sIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124363</attachid>
            <date>2012-01-27 13:55:44 -0800</date>
            <delta_ts>2012-01-27 18:21:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77238-20120127135543.patch</filename>
            <type>text/plain</type>
            <size>14675</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVhNmRkMzhjMzRmYmYz
MDI0MDA2NGJiNWRhZTM5Y2NmZWU3ZTdjOS4uM2FiZmNkZWNkNzlhODY5ZTU0NjAxODg5ZDZhOWZk
ZmZlYWU5YzkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTAxLTI3ICBHcmVn
ZyBUYXZhcmVzICA8Z21hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIFBsdW1taW5nIHRv
IGdldCBncmFwaGljcyBlcnJvciBtZXNzYWdlcyB0byBKUyBDb25zb2xlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzIzOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQor
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjazo6b25FcnJvck1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdl
Q2FsbGJhY2s6On5XZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6aW5p
dGlhbGl6ZU5ld0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp+V2ViR0xSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkdMUmVuZGVyaW5nQ29udGV4dCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAg
KEVycm9yTWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpFcnJvck1lc3NhZ2VDYWxsYmFjazo6fkVycm9yTWVzc2FnZUNhbGxiYWNrKToKKyAgICAg
ICAgKEdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpzZXRFcnJvck1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNldEVycm9yTWVzc2FnZUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmUpOgor
CiAyMDEyLTAxLTI3ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgQ3Jhc2ggaW4gRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggOTVlMjE0Mjk3Mjk1Y2I3MTZhMjY4MDk0MGQ0Mjg3NmM4MzAy
MWY3YS4uNWM5MWQwOWMzYTg1ZTJmZTgyNjRjOTVlNzg2ZGEwOTZmM2Q1YjcyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0wMS0yNyAgR3JlZ2cgVGF2
YXJlcyAgPGdtYW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGQgUGx1bW1pbmcgdG8gZ2V0IGdy
YXBoaWNzIGVycm9yIG1lc3NhZ2VzIHRvIEpTIENvbnNvbGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViR3JhcGhpY3ND
b250ZXh0M0QuaDoKKyAgICAgICAgKFdlYkdyYXBoaWNzRXJyb3JNZXNzYWdlQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6V2ViR3JhcGhpY3NFcnJvck1l
c3NhZ2VDYWxsYmFjazo6fldlYkdyYXBoaWNzRXJyb3JNZXNzYWdlQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRDo6c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIHNyYy9HcmFwaGlj
c0NvbnRleHQzRENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChH
cmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlcjo6fkdyYXBoaWNzRXJyb3JNZXNzYWdl
Q2FsbGJhY2tBZGFwdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzRXJyb3JNZXNzYWdl
Q2FsbGJhY2tBZGFwdGVyOjpHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlcjo6b25F
cnJvck1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NFcnJvck1lc3NhZ2VDYWxs
YmFja0FkYXB0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKiBzcmMvR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKCk6CisK
IDIwMTItMDEtMjYgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtDaHJvbWl1bV0gQ2xlYW51cCBvZiBXZWJQb3B1cE1lbnVJbXBsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAwNDU2
NjdiYzZhZGE1MjRlOTcxMmIzOWRmMjVjOGM1YWYzOWY2ZjE2Li45MTc2YTJkYTQ0ZmQ2ODlkMjIx
YmE2MTM4NGE3NTY5ZjY0ZjQxNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM3NCw2ICszNzQsMTUgQEAgcHJp
dmF0ZToKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIG1fY29udGV4dDsKIH07CiAKK2NsYXNz
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrIDogcHVibGljIEdyYXBo
aWNzQ29udGV4dDNEOjpFcnJvck1lc3NhZ2VDYWxsYmFjayB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgV2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdlQ2FsbGJhY2soV2ViR0xSZW5kZXJp
bmdDb250ZXh0KiBjYikgOiBtX2NvbnRleHQoY2IpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvbkVy
cm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEdDM0RpbnQpIHsgbV9jb250ZXh0LT5w
cmludFdhcm5pbmdUb0NvbnNvbGUobWVzc2FnZSk7IH0KKyAgICB2aXJ0dWFsIH5XZWJHTFJlbmRl
cmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjaygpIHsgfQorcHJpdmF0ZToKKyAgICBXZWJH
TFJlbmRlcmluZ0NvbnRleHQqIG1fY29udGV4dDsKK307CisKIFBhc3NPd25QdHI8V2ViR0xSZW5k
ZXJpbmdDb250ZXh0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShIVE1MQ2FudmFzRWxl
bWVudCogY2FudmFzLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKiBhdHRycykKIHsKICAgICBIb3N0
V2luZG93KiBob3N0V2luZG93ID0gY2FudmFzLT5kb2N1bWVudCgpLT52aWV3KCktPnJvb3QoKS0+
aG9zdFdpbmRvdygpOwpAQCAtNTAwLDYgKzUwOSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAw
LCBjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKTsKIAogICAgIG1fY29udGV4
dC0+c2V0Q29udGV4dExvc3RDYWxsYmFjayhhZG9wdFB0cihuZXcgV2ViR0xSZW5kZXJpbmdDb250
ZXh0TG9zdENhbGxiYWNrKHRoaXMpKSk7CisgICAgbV9jb250ZXh0LT5zZXRFcnJvck1lc3NhZ2VD
YWxsYmFjayhhZG9wdFB0cihuZXcgV2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdlQ2Fs
bGJhY2sodGhpcykpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNldHVwRmxh
Z3MoKQpAQCAtNTQ4LDYgKzU1OCw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6fldlYkdMUmVu
ZGVyaW5nQ29udGV4dCgpCiAKICAgICBkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCk7CiAgICAg
bV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKG51bGxwdHIpOworICAgIG1fY29udGV4
dC0+c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2sobnVsbHB0cik7CiAgICAgbV9jb250ZXh0R3JvdXAt
PnJlbW92ZUNvbnRleHQodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggNTU1MDM2MDFhZmY4ZjhmOThmODQy
MzBjMmRiYWQ2YTgwNjQ4ZDY5Yi4uMTgyOTFmZGQ2ZjIzZmU0MzU5MzBjOWJhZDI3NjYxOWI4ZjU1
ODc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgKQEAgLTMyMiw2ICszMjIsNyBAQCBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNz
IE9FU1ZlcnRleEFycmF5T2JqZWN0OwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTERlYnVnU2hhZGVy
czsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM7CisgICAgZnJpZW5k
IGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrOwogCiAgICAg
V2ViR0xSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50KiwgUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4sIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKICAgICB2b2lk
IGluaXRpYWxpemVOZXdDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCBkZmViYmJhOWIwMmQ4NzI2YzMw
MGYzMTk3ZGRjMTk5YjI0OWU5OTM1Li4zNGM1NDlhYjQ4NzNjMmIxOWVlZTM1N2YzZjIyZmI0NWRl
ZTc1ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmgKQEAgLTQ1NCw3ICs0NTQsMTQgQEAgcHVibGljOgogICAgICAgICB2
aXJ0dWFsIH5Db250ZXh0TG9zdENhbGxiYWNrKCkge30KICAgICB9OwogCisgICAgY2xhc3MgRXJy
b3JNZXNzYWdlQ2FsbGJhY2sgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB2b2lkIG9u
RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgR0MzRGludCBpZCkgPSAwOworICAg
ICAgICB2aXJ0dWFsIH5FcnJvck1lc3NhZ2VDYWxsYmFjaygpIHsgfQorICAgIH07CisKICAgICB2
b2lkIHNldENvbnRleHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250ZXh0TG9zdENhbGxiYWNr
Pik7CisgICAgdm9pZCBzZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhQYXNzT3duUHRyPEVycm9yTWVz
c2FnZUNhbGxiYWNrPik7CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY3JlYXRlKEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBSZW5kZXJTdHlsZSA9IFJlbmRlck9m
ZnNjcmVlbik7CiAgICAgfkdyYXBoaWNzQ29udGV4dDNEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dDNEQ2Fpcm8uY3BwCmluZGV4IGI1ZTEyMzFkMjA3YzlkMzI5MmEzMTgxNmJkYjgxZGVhYjhjZGM4
YTkuLmM4NWFhYjQxNjU4NmIyZTBiNzFhMDc0ZTZjODlmNTZjM2QwZmY1MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCkBAIC0xMTUsNiArMTE1LDEwIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnNldENvbnRleHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250ZXh0TG9z
dENhbGxiYWNrPikKIHsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0RXJyb3JNZXNz
YWdlQ2FsbGJhY2soUGFzc093blB0cjxFcnJvck1lc3NhZ2VDYWxsYmFjaz4pCit7Cit9CisKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiBQbGF0Zm9ybUxheWVyKiBHcmFwaGljc0Nv
bnRleHQzRDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNw
cAppbmRleCBkNDUyMzVlMTRjYTVmMjVhNjhhZWQ4NDNiMDcyNzhmZTE0MWY4ZmE3Li5lM2U4MmY5
OTg1N2I0MzExZTBlNWRiNWQ2NWQwNDRlM2E1NmE5MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVm
bC5jcHAKQEAgLTgzNiw2ICs4MzYsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0Q29u
dGV4dExvc3RDYWxsYmFjayhQYXNzT3duUHRyPENvbnRleHRMb3N0Q2FsbGJhY2s+KQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNldEVycm9yTWVz
c2FnZUNhbGxiYWNrKFBhc3NPd25QdHI8RXJyb3JNZXNzYWdlQ2FsbGJhY2s+KQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0
YShJbWFnZSogaW1hZ2UsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgYm9vbCBwcmVt
dWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUsIFZlY3Rvcjx1aW50OF90PiYgb3V0cHV0VmVjdG9y
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dy
YXBoaWNzQ29udGV4dDNETWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCmluZGV4IGUzYzM3MWEyYzIyOTg5OTQ5MTMwNDA2
OTk4OWU1MGZlMTBjM2I3YzIuLmE4M2UwZGU5NzBkN2FiZGJhYzg3MWY4ODc0YjRmOGM2ODU0Njhk
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0NvbnRleHQzRE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0KQEAgLTI3OCw2ICsyNzgsMTAgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6c2V0Q29udGV4dExvc3RDYWxsYmFjayhQYXNzT3duUHRyPENvbnRl
eHRMb3N0Q2FsbGJhY2s+KQogewogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzZXRFcnJv
ck1lc3NhZ2VDYWxsYmFjayhQYXNzT3duUHRyPEVycm9yTWVzc2FnZUNhbGxiYWNrPikKK3sKK30K
KwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRl
eCA5MTczYTVkY2M4YzcxM2ZhM2NkMGY0M2NkYTkyZTRmYzFjOTE4NzlkLi40OTViY2FkZDMyN2Mw
N2M4MTBjZjAzYjY1ZjNlNzBlOTFlYmY5NTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAt
MTYzOSw2ICsxNjM5LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNldENvbnRleHRMb3N0
Q2FsbGJhY2soUGFzc093blB0cjxDb250ZXh0TG9zdENhbGxiYWNrPikKIHsKIH0KIAordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2soUGFzc093blB0cjxFcnJv
ck1lc3NhZ2VDYWxsYmFjaz4pCit7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkdy
YXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJHcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDM4MTE0MzZjMjc4ZDVmMWNkZDdmZmNjMjg2
MzA5MGEwYzlhOTlhYjYuLjAzNzg5ZDAwMTJhOGVjZmQ5NzE3NWE1N2UyOWVlNmM1OWUwOTgzYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkdy
YXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTE4LDYgKzExOCwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIHZpcnR1YWwgfldlYkdyYXBoaWNzQ29udGV4dExvc3RDYWxsYmFjaygpIHsgfQog
ICAgIH07CiAKKyAgICBjbGFzcyBXZWJHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yTWVzc2FnZShjb25zdCBXZWJT
dHJpbmcmLCBXR0MzRGludCkgPSAwOworICAgICAgICB2aXJ0dWFsIH5XZWJHcmFwaGljc0Vycm9y
TWVzc2FnZUNhbGxiYWNrKCkgeyB9CisgICAgfTsKKwogICAgIGNsYXNzIFdlYkdyYXBoaWNzU3dh
cEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQ0hST01JVU0gewogICAgIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpID0gMDsKQEAgLTM2OSw2ICszNzUs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUoV2ViR0xJZCkgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRleHRMb3N0Q2FsbGJhY2soV2ViR3JhcGhpY3ND
b250ZXh0TG9zdENhbGxiYWNrKiBjYWxsYmFjaykge30KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RXJy
b3JNZXNzYWdlQ2FsbGJhY2soV2ViR3JhcGhpY3NFcnJvck1lc3NhZ2VDYWxsYmFjayogY2FsbGJh
Y2spIHsgfQogICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNzCiAgICAgLy8KICAgICAvLyBUaGlzIGVu
dHJ5IHBvaW50IG11c3QgcHJvdmlkZSBzbGlnaHRseSBkaWZmZXJlbnQgc2VtYW50aWNzIHRoYW4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNE
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0
M0RDaHJvbWl1bS5jcHAKaW5kZXggYmVlYjk0YjY1OGMwNWRiYzhkMTJkYWM1MmVkNjlmZWYzNDll
ZmU2ZC4uMmQzMmQxY2RkMDJlZTQ1MDkzNTU5N2M3NDkxY2VhNzM0ZTk2ZmI0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJv
bWl1bS5jcHAKQEAgLTEwMzIsNiArMTAzMiw3IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGlj
c0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcywgSG9zdFdpbmRvdyosCiBH
cmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKCkKIHsKICAgICBtX3ByaXZhdGUt
PnNldENvbnRleHRMb3N0Q2FsbGJhY2sobnVsbHB0cik7CisgICAgbV9wcml2YXRlLT5zZXRFcnJv
ck1lc3NhZ2VDYWxsYmFjayhudWxscHRyKTsKICAgICBtX3ByaXZhdGUtPnNldFN3YXBCdWZmZXJz
Q29tcGxldGVDYWxsYmFja0NIUk9NSVVNKG51bGxwdHIpOwogfQogCkBAIC0xMjY4LDYgKzEyNjks
NyBAQCBERUxFR0FURV9UT19JTlRFUk5BTF8xKHN5bnRoZXNpemVHTEVycm9yLCBHQzNEZW51bSkK
IERFTEVHQVRFX1RPX0lOVEVSTkFMX1IoZ2V0RXh0ZW5zaW9ucywgRXh0ZW5zaW9uczNEKikKIAog
REVMRUdBVEVfVE9fSU5URVJOQUxfMShzZXRDb250ZXh0TG9zdENhbGxiYWNrLCBQYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dDNEOjpDb250ZXh0TG9zdENhbGxiYWNrPikKK0RFTEVHQVRFX1RPX0lO
VEVSTkFMXzEoc2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2ssIFBhc3NPd25QdHI8R3JhcGhpY3NDb250
ZXh0M0Q6OkVycm9yTWVzc2FnZUNhbGxiYWNrPikKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0TG9z
dENhbGxiYWNrQWRhcHRlciA6IHB1YmxpYyBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpX
ZWJHcmFwaGljc0NvbnRleHRMb3N0Q2FsbGJhY2sgewogcHVibGljOgpAQCAtMTI5Niw2ICsxMjk4
LDMzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpzZXRDb250ZXh0TG9zdENhbGxi
YWNrKFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0CiAgICAgbV9pbXBsLT5zZXRDb250ZXh0TG9z
dENhbGxiYWNrKG1fY29udGV4dExvc3RDYWxsYmFja0FkYXB0ZXIuZ2V0KCkpOwogfQogCitjbGFz
cyBHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlciA6IHB1YmxpYyBXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEOjpXZWJHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrIHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgb25FcnJvck1lc3NhZ2UoY29uc3QgV2ViS2l0OjpXZWJT
dHJpbmcmLCBXZWJLaXQ6OldHQzNEaW50KTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGlj
c0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlcj4gY3JlYXRlKFBhc3NPd25QdHI8R3JhcGhpY3ND
b250ZXh0M0Q6OkVycm9yTWVzc2FnZUNhbGxiYWNrPik7CisgICAgdmlydHVhbCB+R3JhcGhpY3NF
cnJvck1lc3NhZ2VDYWxsYmFja0FkYXB0ZXIoKSB7IH0KK3ByaXZhdGU6CisgICAgR3JhcGhpY3NF
cnJvck1lc3NhZ2VDYWxsYmFja0FkYXB0ZXIoUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRDo6
RXJyb3JNZXNzYWdlQ2FsbGJhY2s+IGNiKSA6IG1fZXJyb3JNZXNzYWdlQ2FsbGJhY2soY2IpIHsg
fQorICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRDo6RXJyb3JNZXNzYWdlQ2FsbGJhY2s+IG1f
ZXJyb3JNZXNzYWdlQ2FsbGJhY2s7Cit9OworCit2b2lkIEdyYXBoaWNzRXJyb3JNZXNzYWdlQ2Fs
bGJhY2tBZGFwdGVyOjpvbkVycm9yTWVzc2FnZShjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgbWVz
c2FnZSwgV2ViS2l0OjpXR0MzRGludCBpZCkKK3sKKyAgICBpZiAobV9lcnJvck1lc3NhZ2VDYWxs
YmFjaykKKyAgICAgICAgbV9lcnJvck1lc3NhZ2VDYWxsYmFjay0+b25FcnJvck1lc3NhZ2UobWVz
c2FnZSwgaWQpOworfQorCitQYXNzT3duUHRyPEdyYXBoaWNzRXJyb3JNZXNzYWdlQ2FsbGJhY2tB
ZGFwdGVyPiBHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlcjo6Y3JlYXRlKFBhc3NP
d25QdHI8R3JhcGhpY3NDb250ZXh0M0Q6OkVycm9yTWVzc2FnZUNhbGxiYWNrPiBjYikKK3sKKyAg
ICByZXR1cm4gYWRvcHRQdHIoY2IuZ2V0KCkgPyBuZXcgR3JhcGhpY3NFcnJvck1lc3NhZ2VDYWxs
YmFja0FkYXB0ZXIoY2IpIDogMCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpzZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEOjpF
cnJvck1lc3NhZ2VDYWxsYmFjaz4gY2IpCit7CisgICAgbV9lcnJvck1lc3NhZ2VDYWxsYmFja0Fk
YXB0ZXIgPSBHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlcjo6Y3JlYXRlKGNiKTsK
KyAgICBtX2ltcGwtPnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKG1fZXJyb3JNZXNzYWdlQ2FsbGJh
Y2tBZGFwdGVyLmdldCgpKTsKK30KKwogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNHTEVTMkNv
bXBsaWFudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNHTEVTMkNvbXBsaWFu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaAppbmRleCAyODA3OWMzMTMzMmEwNWQzZjE5MTEyNjQ1Y2E0OWZhMmZlOWIw
NGUzLi5mMmQ0OWExMzJjNjQ1Yzg4YjBhMjc5MWFkMzEyM2Y1NjViOWIxMjk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBEcmF3aW5nQnVmZmVyOwogY2xhc3MgRXh0ZW5zaW9u
czNEQ2hyb21pdW07CiBjbGFzcyBHcmFwaGljc0NvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0RTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVy
OworY2xhc3MgR3JhcGhpY3NFcnJvck1lc3NhZ2VDYWxsYmFja0FkYXB0ZXI7CiAKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZSB7CiBwdWJsaWM6CkBAIC0yNzMsNiArMjc0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0MzRGVudW0gZXJyb3IpOwogCiAgICAg
dm9pZCBzZXRDb250ZXh0TG9zdENhbGxiYWNrKFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q6
OkNvbnRleHRMb3N0Q2FsbGJhY2s+KTsKKyAgICB2b2lkIHNldEVycm9yTWVzc2FnZUNhbGxiYWNr
KFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q6OkVycm9yTWVzc2FnZUNhbGxiYWNrPik7CiAK
ICAgICAvLyBFeHRlbnNpb25zM0Qgc3VwcG9ydC4KICAgICBFeHRlbnNpb25zM0QqIGdldEV4dGVu
c2lvbnMoKTsKQEAgLTMyMSw2ICszMjMsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEPiBtX2ltcGw7CiAgICAgT3duUHRyPEV4dGVuc2lvbnMzRENo
cm9taXVtPiBtX2V4dGVuc2lvbnM7CiAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dExvc3RDYWxs
YmFja0FkYXB0ZXI+IG1fY29udGV4dExvc3RDYWxsYmFja0FkYXB0ZXI7CisgICAgT3duUHRyPEdy
YXBoaWNzRXJyb3JNZXNzYWdlQ2FsbGJhY2tBZGFwdGVyPiBtX2Vycm9yTWVzc2FnZUNhbGxiYWNr
QWRhcHRlcjsKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0RTd2FwQnVmZmVyc0NvbXBsZXRl
Q2FsbGJhY2tBZGFwdGVyPiBtX3N3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0FkYXB0ZXI7CiAg
ICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogbV93ZWJWaWV3SW1wbDsKICAgICBib29sIG1faW5pdGlh
bGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124417</attachid>
            <date>2012-01-27 18:21:47 -0800</date>
            <delta_ts>2012-01-30 19:11:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77238-20120127182146.patch</filename>
            <type>text/plain</type>
            <size>14690</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVhNmRkMzhjMzRmYmYz
MDI0MDA2NGJiNWRhZTM5Y2NmZWU3ZTdjOS4uMjBlZTliN2FiNWY2MWY5M2MyZWQ5ZGM5YTQwY2Jj
ZmE3Y2U5MDc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTAxLTI3ICBHcmVn
ZyBUYXZhcmVzICA8Z21hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIFBsdW1taW5nIHRv
IGdldCBncmFwaGljcyBlcnJvciBtZXNzYWdlcyB0byBKUyBDb25zb2xlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzIzOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdl
IGluIGJlaGF2aW9yLgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2Fn
ZUNhbGxiYWNrOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFj
azo6b25FcnJvck1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0RXJyb3JNZXNzYWdlQ2FsbGJhY2s6On5XZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3Nh
Z2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6aW5pdGlhbGl6ZU5ld0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp+V2ViR0xSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkdMUmVuZGVy
aW5nQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaDoKKyAgICAgICAgKEVycm9yTWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpFcnJvck1lc3NhZ2VDYWxsYmFjazo6fkVycm9yTWVzc2FnZUNh
bGxiYWNrKToKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzZXRFcnJvck1lc3NhZ2VDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3ND
b250ZXh0M0RFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNl
dEVycm9yTWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorCiAyMDEyLTAxLTI3ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggaW4gRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21G
cmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOTVlMjE0Mjk3Mjk1Y2I3MTZhMjY4
MDk0MGQ0Mjg3NmM4MzAyMWY3YS4uNWM5MWQwOWMzYTg1ZTJmZTgyNjRjOTVlNzg2ZGEwOTZmM2Q1
YjcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0w
MS0yNyAgR3JlZ2cgVGF2YXJlcyAgPGdtYW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGQgUGx1
bW1pbmcgdG8gZ2V0IGdyYXBoaWNzIGVycm9yIG1lc3NhZ2VzIHRvIEpTIENvbnNvbGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MjM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZv
cm0vV2ViR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKFdlYkdyYXBoaWNzRXJyb3JNZXNz
YWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6V2Vi
R3JhcGhpY3NFcnJvck1lc3NhZ2VDYWxsYmFjazo6fldlYkdyYXBoaWNzRXJyb3JNZXNzYWdlQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2spOgorICAgICAg
ICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlcjo6fkdyYXBo
aWNzRXJyb3JNZXNzYWdlQ2FsbGJhY2tBZGFwdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzRXJyb3JNZXNzYWdlQ2FsbGJhY2tBZGFwdGVyOjpHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxi
YWNrQWRhcHRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxi
YWNrQWRhcHRlcjo6b25FcnJvck1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NF
cnJvck1lc3NhZ2VDYWxsYmFja0FkYXB0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKToKKyAgICAg
ICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKCk6CisKIDIwMTItMDEtMjYgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gQ2xlYW51cCBvZiBXZWJQb3B1cE1lbnVJbXBsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAppbmRleCAwNDU2NjdiYzZhZGE1MjRlOTcxMmIzOWRmMjVjOGM1YWYzOWY2ZjE2Li45MTc2
YTJkYTQ0ZmQ2ODlkMjIxYmE2MTM4NGE3NTY5ZjY0ZjQxNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM3NCw2
ICszNzQsMTUgQEAgcHJpdmF0ZToKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIG1fY29udGV4
dDsKIH07CiAKK2NsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNr
IDogcHVibGljIEdyYXBoaWNzQ29udGV4dDNEOjpFcnJvck1lc3NhZ2VDYWxsYmFjayB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgV2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdlQ2FsbGJh
Y2soV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjYikgOiBtX2NvbnRleHQoY2IpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBvbkVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEdDM0RpbnQp
IHsgbV9jb250ZXh0LT5wcmludFdhcm5pbmdUb0NvbnNvbGUobWVzc2FnZSk7IH0KKyAgICB2aXJ0
dWFsIH5XZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjaygpIHsgfQorcHJp
dmF0ZToKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIG1fY29udGV4dDsKK307CisKIFBhc3NP
d25QdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZShIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKiBhdHRy
cykKIHsKICAgICBIb3N0V2luZG93KiBob3N0V2luZG93ID0gY2FudmFzLT5kb2N1bWVudCgpLT52
aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpOwpAQCAtNTAwLDYgKzUwOSw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgbV9jb250ZXh0
LT52aWV3cG9ydCgwLCAwLCBjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKTsK
IAogICAgIG1fY29udGV4dC0+c2V0Q29udGV4dExvc3RDYWxsYmFjayhhZG9wdFB0cihuZXcgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0TG9zdENhbGxiYWNrKHRoaXMpKSk7CisgICAgbV9jb250ZXh0LT5z
ZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhhZG9wdFB0cihuZXcgV2ViR0xSZW5kZXJpbmdDb250ZXh0
RXJyb3JNZXNzYWdlQ2FsbGJhY2sodGhpcykpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnNldHVwRmxhZ3MoKQpAQCAtNTQ4LDYgKzU1OCw3IEBAIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6fldlYkdMUmVuZGVyaW5nQ29udGV4dCgpCiAKICAgICBkZXRhY2hBbmRSZW1vdmVBbGxP
YmplY3RzKCk7CiAgICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKG51bGxwdHIp
OworICAgIG1fY29udGV4dC0+c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2sobnVsbHB0cik7CiAgICAg
bV9jb250ZXh0R3JvdXAtPnJlbW92ZUNvbnRleHQodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggNTU1MDM2
MDFhZmY4ZjhmOThmODQyMzBjMmRiYWQ2YTgwNjQ4ZDY5Yi4uMTgyOTFmZGQ2ZjIzZmU0MzU5MzBj
OWJhZDI3NjYxOWI4ZjU1ODc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTMyMiw2ICszMjIsNyBAQCBwdWJsaWM6CiAg
ICAgZnJpZW5kIGNsYXNzIE9FU1ZlcnRleEFycmF5T2JqZWN0OwogICAgIGZyaWVuZCBjbGFzcyBX
ZWJHTERlYnVnU2hhZGVyczsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZXM7CisgICAgZnJpZW5kIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNh
bGxiYWNrOwogCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50Kiwg
UGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzKTsKICAgICB2b2lkIGluaXRpYWxpemVOZXdDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCBkZmVi
YmJhOWIwMmQ4NzI2YzMwMGYzMTk3ZGRjMTk5YjI0OWU5OTM1Li4zNGM1NDlhYjQ4NzNjMmIxOWVl
ZTM1N2YzZjIyZmI0NWRlZTc1ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTQ1NCw3ICs0NTQsMTQgQEAgcHVi
bGljOgogICAgICAgICB2aXJ0dWFsIH5Db250ZXh0TG9zdENhbGxiYWNrKCkge30KICAgICB9Owog
CisgICAgY2xhc3MgRXJyb3JNZXNzYWdlQ2FsbGJhY2sgeworICAgIHB1YmxpYzoKKyAgICAgICAg
dmlydHVhbCB2b2lkIG9uRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgR0MzRGlu
dCBpZCkgPSAwOworICAgICAgICB2aXJ0dWFsIH5FcnJvck1lc3NhZ2VDYWxsYmFjaygpIHsgfQor
ICAgIH07CisKICAgICB2b2lkIHNldENvbnRleHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250
ZXh0TG9zdENhbGxiYWNrPik7CisgICAgdm9pZCBzZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhQYXNz
T3duUHRyPEVycm9yTWVzc2FnZUNhbGxiYWNrPik7CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY3JlYXRlKEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBSZW5kZXJT
dHlsZSA9IFJlbmRlck9mZnNjcmVlbik7CiAgICAgfkdyYXBoaWNzQ29udGV4dDNEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmluZGV4IGI1ZTEyMzFkMjA3YzlkMzI5MmEzMTgx
NmJkYjgxZGVhYjhjZGM4YTkuLmM4NWFhYjQxNjU4NmIyZTBiNzFhMDc0ZTZjODlmNTZjM2QwZmY1
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCkBAIC0xMTUsNiArMTE1LDEw
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNldENvbnRleHRMb3N0Q2FsbGJhY2soUGFzc093
blB0cjxDb250ZXh0TG9zdENhbGxiYWNrPikKIHsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2soUGFzc093blB0cjxFcnJvck1lc3NhZ2VDYWxsYmFj
az4pCit7Cit9CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiBQbGF0Zm9ybUxh
eWVyKiBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
Q29udGV4dDNERWZsLmNwcAppbmRleCBkNDUyMzVlMTRjYTVmMjVhNjhhZWQ4NDNiMDcyNzhmZTE0
MWY4ZmE3Li5lM2U4MmY5OTg1N2I0MzExZTBlNWRiNWQ2NWQwNDRlM2E1NmE5MWEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzREVmbC5jcHAKQEAgLTgzNiw2ICs4MzYsMTEgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6c2V0Q29udGV4dExvc3RDYWxsYmFjayhQYXNzT3duUHRyPENvbnRleHRMb3N0Q2Fs
bGJhY2s+KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKFBhc3NPd25QdHI8RXJyb3JNZXNzYWdlQ2FsbGJh
Y2s+KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0g
dHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUsIFZlY3Rvcjx1aW50OF90
PiYgb3V0cHV0VmVjdG9yKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCmluZGV4IGUzYzM3MWEy
YzIyOTg5OTQ5MTMwNDA2OTk4OWU1MGZlMTBjM2I3YzIuLmE4M2UwZGU5NzBkN2FiZGJhYzg3MWY4
ODc0YjRmOGM2ODU0NjhkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0KQEAgLTI3OCw2ICsy
NzgsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0Q29udGV4dExvc3RDYWxsYmFjayhQ
YXNzT3duUHRyPENvbnRleHRMb3N0Q2FsbGJhY2s+KQogewogfQogCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpzZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhQYXNzT3duUHRyPEVycm9yTWVzc2FnZUNh
bGxiYWNrPikKK3sKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcAppbmRleCA5MTczYTVkY2M4YzcxM2ZhM2NkMGY0M2NkYTkyZTRmYzFjOTE4Nzlk
Li40OTViY2FkZDMyN2MwN2M4MTBjZjAzYjY1ZjNlNzBlOTFlYmY5NTgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcApAQCAtMTYzOSw2ICsxNjM5LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnNldENvbnRleHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250ZXh0TG9zdENhbGxiYWNrPikK
IHsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2so
UGFzc093blB0cjxFcnJvck1lc3NhZ2VDYWxsYmFjaz4pCit7Cit9CisKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJHcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDM4MTE0MzZjMjc4
ZDVmMWNkZDdmZmNjMjg2MzA5MGEwYzlhOTlhYjYuLjAzNzg5ZDAwMTJhOGVjZmQ5NzE3NWE1N2Uy
OWVlNmM1OWUwOTgzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTE4LDYgKzEx
OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfldlYkdyYXBoaWNzQ29udGV4dExvc3RD
YWxsYmFjaygpIHsgfQogICAgIH07CiAKKyAgICBjbGFzcyBXZWJHcmFwaGljc0Vycm9yTWVzc2Fn
ZUNhbGxiYWNrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yTWVz
c2FnZShjb25zdCBXZWJTdHJpbmcmLCBXR0MzRGludCkgPSAwOworICAgICAgICB2aXJ0dWFsIH5X
ZWJHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrKCkgeyB9CisgICAgfTsKKwogICAgIGNsYXNz
IFdlYkdyYXBoaWNzU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQ0hST01JVU0gewogICAgIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpID0gMDsK
QEAgLTM2OSw2ICszNzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1
cmUoV2ViR0xJZCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRleHRMb3N0Q2FsbGJh
Y2soV2ViR3JhcGhpY3NDb250ZXh0TG9zdENhbGxiYWNrKiBjYWxsYmFjaykge30KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2soV2ViR3JhcGhpY3NFcnJvck1lc3NhZ2VD
YWxsYmFjayogY2FsbGJhY2spIHsgfQogICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNzCiAgICAgLy8K
ICAgICAvLyBUaGlzIGVudHJ5IHBvaW50IG11c3QgcHJvdmlkZSBzbGlnaHRseSBkaWZmZXJlbnQg
c2VtYW50aWNzIHRoYW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dy
YXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
R3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKaW5kZXggYmVlYjk0YjY1OGMwNWRiYzhkMTJk
YWM1MmVkNjlmZWYzNDllZmU2ZC4uMmQzMmQxY2RkMDJlZTQ1MDkzNTU5N2M3NDkxY2VhNzM0ZTk2
ZmI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250
ZXh0M0RDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhp
Y3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKQEAgLTEwMzIsNiArMTAzMiw3IEBAIEdyYXBoaWNzQ29u
dGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcywg
SG9zdFdpbmRvdyosCiBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKCkKIHsK
ICAgICBtX3ByaXZhdGUtPnNldENvbnRleHRMb3N0Q2FsbGJhY2sobnVsbHB0cik7CisgICAgbV9w
cml2YXRlLT5zZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhudWxscHRyKTsKICAgICBtX3ByaXZhdGUt
PnNldFN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0NIUk9NSVVNKG51bGxwdHIpOwogfQogCkBA
IC0xMjY4LDYgKzEyNjksNyBAQCBERUxFR0FURV9UT19JTlRFUk5BTF8xKHN5bnRoZXNpemVHTEVy
cm9yLCBHQzNEZW51bSkKIERFTEVHQVRFX1RPX0lOVEVSTkFMX1IoZ2V0RXh0ZW5zaW9ucywgRXh0
ZW5zaW9uczNEKikKIAogREVMRUdBVEVfVE9fSU5URVJOQUxfMShzZXRDb250ZXh0TG9zdENhbGxi
YWNrLCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEOjpDb250ZXh0TG9zdENhbGxiYWNrPikK
K0RFTEVHQVRFX1RPX0lOVEVSTkFMXzEoc2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2ssIFBhc3NPd25Q
dHI8R3JhcGhpY3NDb250ZXh0M0Q6OkVycm9yTWVzc2FnZUNhbGxiYWNrPikKIAogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0TG9zdENhbGxiYWNrQWRhcHRlciA6IHB1YmxpYyBXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNEOjpXZWJHcmFwaGljc0NvbnRleHRMb3N0Q2FsbGJhY2sgewogcHVibGljOgpA
QCAtMTI5Niw2ICsxMjk4LDMzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpzZXRD
b250ZXh0TG9zdENhbGxiYWNrKFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0CiAgICAgbV9pbXBs
LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKG1fY29udGV4dExvc3RDYWxsYmFja0FkYXB0ZXIuZ2V0
KCkpOwogfQogCitjbGFzcyBHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlciA6IHB1
YmxpYyBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpXZWJHcmFwaGljc0Vycm9yTWVzc2Fn
ZUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgb25FcnJvck1lc3NhZ2UoY29u
c3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBXZWJLaXQ6OldHQzNEaW50KTsKKyAgICBzdGF0aWMgUGFz
c093blB0cjxHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlcj4gY3JlYXRlKFBhc3NP
d25QdHI8R3JhcGhpY3NDb250ZXh0M0Q6OkVycm9yTWVzc2FnZUNhbGxiYWNrPik7CisgICAgdmly
dHVhbCB+R3JhcGhpY3NFcnJvck1lc3NhZ2VDYWxsYmFja0FkYXB0ZXIoKSB7IH0KK3ByaXZhdGU6
CisgICAgR3JhcGhpY3NFcnJvck1lc3NhZ2VDYWxsYmFja0FkYXB0ZXIoUGFzc093blB0cjxHcmFw
aGljc0NvbnRleHQzRDo6RXJyb3JNZXNzYWdlQ2FsbGJhY2s+IGNiKSA6IG1fZXJyb3JNZXNzYWdl
Q2FsbGJhY2soY2IpIHsgfQorICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRDo6RXJyb3JNZXNz
YWdlQ2FsbGJhY2s+IG1fZXJyb3JNZXNzYWdlQ2FsbGJhY2s7Cit9OworCit2b2lkIEdyYXBoaWNz
RXJyb3JNZXNzYWdlQ2FsbGJhY2tBZGFwdGVyOjpvbkVycm9yTWVzc2FnZShjb25zdCBXZWJLaXQ6
OldlYlN0cmluZyYgbWVzc2FnZSwgV2ViS2l0OjpXR0MzRGludCBpZCkKK3sKKyAgICBpZiAobV9l
cnJvck1lc3NhZ2VDYWxsYmFjaykKKyAgICAgICAgbV9lcnJvck1lc3NhZ2VDYWxsYmFjay0+b25F
cnJvck1lc3NhZ2UobWVzc2FnZSwgaWQpOworfQorCitQYXNzT3duUHRyPEdyYXBoaWNzRXJyb3JN
ZXNzYWdlQ2FsbGJhY2tBZGFwdGVyPiBHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRl
cjo6Y3JlYXRlKFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q6OkVycm9yTWVzc2FnZUNhbGxi
YWNrPiBjYikKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIoY2IuZ2V0KCkgPyBuZXcgR3JhcGhpY3NF
cnJvck1lc3NhZ2VDYWxsYmFja0FkYXB0ZXIoY2IpIDogMCk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpzZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhQYXNzT3duUHRyPEdyYXBo
aWNzQ29udGV4dDNEOjpFcnJvck1lc3NhZ2VDYWxsYmFjaz4gY2IpCit7CisgICAgbV9lcnJvck1l
c3NhZ2VDYWxsYmFja0FkYXB0ZXIgPSBHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRl
cjo6Y3JlYXRlKGNiKTsKKyAgICBtX2ltcGwtPnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKG1fZXJy
b3JNZXNzYWdlQ2FsbGJhY2tBZGFwdGVyLmdldCgpKTsKK30KKwogYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+
aXNHTEVTMkNvbXBsaWFudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAppbmRleCAyODA3OWMzMTMzMmEwNWQzZjE5MTEy
NjQ1Y2E0OWZhMmZlOWIwNGUzLi5mMmQ0OWExMzJjNjQ1Yzg4YjBhMjc5MWFkMzEyM2Y1NjViOWIx
Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBEcmF3aW5nQnVmZmVyOwog
Y2xhc3MgRXh0ZW5zaW9uczNEQ2hyb21pdW07CiBjbGFzcyBHcmFwaGljc0NvbnRleHRMb3N0Q2Fs
bGJhY2tBZGFwdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RTd2FwQnVmZmVyc0NvbXBsZXRl
Q2FsbGJhY2tBZGFwdGVyOworY2xhc3MgR3JhcGhpY3NFcnJvck1lc3NhZ2VDYWxsYmFja0FkYXB0
ZXI7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSB7CiBwdWJsaWM6CkBAIC0yNzMs
NiArMjc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0MzRGVudW0g
ZXJyb3IpOwogCiAgICAgdm9pZCBzZXRDb250ZXh0TG9zdENhbGxiYWNrKFBhc3NPd25QdHI8R3Jh
cGhpY3NDb250ZXh0M0Q6OkNvbnRleHRMb3N0Q2FsbGJhY2s+KTsKKyAgICB2b2lkIHNldEVycm9y
TWVzc2FnZUNhbGxiYWNrKFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q6OkVycm9yTWVzc2Fn
ZUNhbGxiYWNrPik7CiAKICAgICAvLyBFeHRlbnNpb25zM0Qgc3VwcG9ydC4KICAgICBFeHRlbnNp
b25zM0QqIGdldEV4dGVuc2lvbnMoKTsKQEAgLTMyMSw2ICszMjMsNyBAQCBwcml2YXRlOgogICAg
IE93blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiBtX2ltcGw7CiAgICAgT3duUHRy
PEV4dGVuc2lvbnMzRENocm9taXVtPiBtX2V4dGVuc2lvbnM7CiAgICAgT3duUHRyPEdyYXBoaWNz
Q29udGV4dExvc3RDYWxsYmFja0FkYXB0ZXI+IG1fY29udGV4dExvc3RDYWxsYmFja0FkYXB0ZXI7
CisgICAgT3duUHRyPEdyYXBoaWNzRXJyb3JNZXNzYWdlQ2FsbGJhY2tBZGFwdGVyPiBtX2Vycm9y
TWVzc2FnZUNhbGxiYWNrQWRhcHRlcjsKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0RTd2Fw
QnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVyPiBtX3N3YXBCdWZmZXJzQ29tcGxldGVDYWxs
YmFja0FkYXB0ZXI7CiAgICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogbV93ZWJWaWV3SW1wbDsKICAg
ICBib29sIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>