<?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>105315</bug_id>
          
          <creation_ts>2012-12-18 09:17:18 -0800</creation_ts>
          <short_desc>Web Inspector: introduce Page.captureScreenshot</short_desc>
          <delta_ts>2012-12-20 01:40:39 -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>Web Inspector (Deprecated)</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="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>burg</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>keishi</cc>
    
    <cc>kpiascik</cc>
    
    <cc>loislo</cc>
    
    <cc>paulirish</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>793712</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-18 09:17:18 -0800</bug_when>
    <thetext>It will be primarily used by the automation clients, but maybe we find a good place for it in the front-end as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793719</commentid>
    <comment_count>1</comment_count>
      <attachid>179958</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-18 09:23:04 -0800</bug_when>
    <thetext>Created attachment 179958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793724</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-18 09:25:41 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794003</commentid>
    <comment_count>3</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2012-12-18 13:44:24 -0800</bug_when>
    <thetext>Is there a platform-agnostic way to expose the screenshot image data to the inspector frontend? I&apos;m not aware of any other Inspector functionality that creates image data with a backend Inspector*Agent and exposes it to the Inspector&apos;s DOM. Do you have a sense of the difficulty?

It would be extremely useful for debugging animation frames, showing youtube-like scrubbing previews, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794358</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-18 22:41:56 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Is there a platform-agnostic way to expose the screenshot image data to the inspector frontend? I&apos;m not aware of any other Inspector functionality that creates image data with a backend Inspector*Agent and exposes it to the Inspector&apos;s DOM. Do you have a sense of the difficulty?
&gt; 
&gt; It would be extremely useful for debugging animation frames, showing youtube-like scrubbing previews, etc.

We do ship images from the backend into front-end using base64 encoded strings and display them using data: urls. If you have some good feature in mind that would leverage that for screenshots, please let us know or send a mock!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794597</commentid>
    <comment_count>5</comment_count>
      <attachid>180147</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-19 06:06:40 -0800</bug_when>
    <thetext>Created attachment 180147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794620</commentid>
    <comment_count>6</comment_count>
      <attachid>180147</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-12-19 06:22:11 -0800</bug_when>
    <thetext>Comment on attachment 180147
Patch

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

&gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:84
&gt; +static const char screenshot[] = &quot;screenshot&quot;;

Guess we should migrate to &quot;static const char* const&quot; whenever possible (to make use of the constant memory)

&gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:814
&gt; +    case BrowserDataHintScreenshot:

The WebKit style for this is:

case Foo: {
    BarOne;
    BarTwo;
}

(see e.g. CSSParser.cpp:1822)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794640</commentid>
    <comment_count>7</comment_count>
      <attachid>180147</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-12-19 07:06:29 -0800</bug_when>
    <thetext>Comment on attachment 180147
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:814
&gt;&gt; +    case BrowserDataHintScreenshot:
&gt; 
&gt; The WebKit style for this is:
&gt; 
&gt; case Foo: {
&gt;     BarOne;
&gt;     BarTwo;
&gt; }
&gt; 
&gt; (see e.g. CSSParser.cpp:1822)

Why does this need braces at all?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794645</commentid>
    <comment_count>8</comment_count>
      <attachid>180147</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-12-19 07:13:04 -0800</bug_when>
    <thetext>Comment on attachment 180147
Patch

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

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:1204
&gt; +        *errorString = &quot;Could not capture screenshot.&quot;;

please drop the punctuation from error messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794664</commentid>
    <comment_count>9</comment_count>
      <attachid>180147</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-19 07:45:33 -0800</bug_when>
    <thetext>Comment on attachment 180147
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:1204
&gt;&gt; +        *errorString = &quot;Could not capture screenshot.&quot;;
&gt; 
&gt; please drop the punctuation from error messages.

I&apos;d need to do it in 10 more places throughout this file. I&apos;d better do that separately.

&gt;&gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:84
&gt;&gt; +static const char screenshot[] = &quot;screenshot&quot;;
&gt; 
&gt; Guess we should migrate to &quot;static const char* const&quot; whenever possible (to make use of the constant memory)

Will do.

&gt;&gt;&gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:814
&gt;&gt;&gt; +    case BrowserDataHintScreenshot:
&gt;&gt; 
&gt;&gt; The WebKit style for this is:
&gt;&gt; 
&gt;&gt; case Foo: {
&gt;&gt;     BarOne;
&gt;&gt;     BarTwo;
&gt;&gt; }
&gt;&gt; 
&gt;&gt; (see e.g. CSSParser.cpp:1822)
&gt; 
&gt; Why does this need braces at all?

Historical reasons: I used to have variable declaration there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795228</commentid>
    <comment_count>10</comment_count>
      <attachid>180147</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-19 23:51:48 -0800</bug_when>
    <thetext>Comment on attachment 180147
Patch

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

&gt; Source/WebKit/chromium/public/WebDevToolsAgent.h:101
&gt; +    WEBKIT_EXPORT static WebString patchWithBrowserData(const WebString&amp; message, BrowserDataHint, const WebString&amp; hintData);

This means that the client of this API will always be responsible for formatting the hintData. Is it always going to be a string? What about raw cookies, wouldn&apos;t we need to serialize them in some protocol-defined format if so then we should expose a way to set the patch data and and let WebCore serialize it into a message.

&gt;&gt;&gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:84
&gt;&gt;&gt; +static const char screenshot[] = &quot;screenshot&quot;;
&gt;&gt; 
&gt;&gt; Guess we should migrate to &quot;static const char* const&quot; whenever possible (to make use of the constant memory)
&gt; 
&gt; Will do.

This sounds weird, the array content is already immutable, why making the pointer itself immutable changes where its content is stored?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795229</commentid>
    <comment_count>11</comment_count>
      <attachid>180147</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-19 23:54:29 -0800</bug_when>
    <thetext>Comment on attachment 180147
Patch

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

&gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:782
&gt; +    String messageString(message, messageLength);

This will always copy the message while we want shouldPatchWithBrowserData to be as fast as possible since we are going to call it for each message. You should either use C-functions to find the substring or create the String as String(ASCIILiteral(message)) if the message is always is a null-terminated string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795234</commentid>
    <comment_count>12</comment_count>
      <attachid>180147</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-20 00:22:36 -0800</bug_when>
    <thetext>Comment on attachment 180147
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebDevToolsAgent.h:101
&gt;&gt; +    WEBKIT_EXPORT static WebString patchWithBrowserData(const WebString&amp; message, BrowserDataHint, const WebString&amp; hintData);
&gt; 
&gt; This means that the client of this API will always be responsible for formatting the hintData. Is it always going to be a string? What about raw cookies, wouldn&apos;t we need to serialize them in some protocol-defined format if so then we should expose a way to set the patch data and and let WebCore serialize it into a message.

I was planning on adding as much parameters as possible here. Having said that, I think they need to be of primitive types so that we don&apos;t grow WebKit API too much. We will be able to serialize data such as cookies into the protocol string on the browser-side as soon as they become &quot;public&quot; in the protocol, i.e. standardized.

&gt;&gt;&gt;&gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:84
&gt;&gt;&gt;&gt; +static const char screenshot[] = &quot;screenshot&quot;;
&gt;&gt;&gt; 
&gt;&gt;&gt; Guess we should migrate to &quot;static const char* const&quot; whenever possible (to make use of the constant memory)
&gt;&gt; 
&gt;&gt; Will do.
&gt; 
&gt; This sounds weird, the array content is already immutable, why making the pointer itself immutable changes where its content is stored?

Leaving as []

&gt;&gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:782
&gt;&gt; +    String messageString(message, messageLength);
&gt; 
&gt; This will always copy the message while we want shouldPatchWithBrowserData to be as fast as possible since we are going to call it for each message. You should either use C-functions to find the substring or create the String as String(ASCIILiteral(message)) if the message is always is a null-terminated string.

There is a guard above that makes it work only for the overridden messages that are always small (&quot;message&quot; is not always null-terminated).

&gt;&gt;&gt;&gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:814
&gt;&gt;&gt;&gt; +    case BrowserDataHintScreenshot:
&gt;&gt;&gt; 
&gt;&gt;&gt; The WebKit style for this is:
&gt;&gt;&gt; 
&gt;&gt;&gt; case Foo: {
&gt;&gt;&gt;     BarOne;
&gt;&gt;&gt;     BarTwo;
&gt;&gt;&gt; }
&gt;&gt;&gt; 
&gt;&gt;&gt; (see e.g. CSSParser.cpp:1822)
&gt;&gt; 
&gt;&gt; Why does this need braces at all?
&gt; 
&gt; Historical reasons: I used to have variable declaration there.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795277</commentid>
    <comment_count>13</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-20 01:40:39 -0800</bug_when>
    <thetext>Committed r138236: &lt;http://trac.webkit.org/changeset/138236&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179958</attachid>
            <date>2012-12-18 09:23:04 -0800</date>
            <delta_ts>2012-12-19 06:06:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105315-20121218212020.patch</filename>
            <type>text/plain</type>
            <size>10867</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTcwODdkOGYxN2U1MThj
MjNlMzAyODg2MjY4MWU2YjQ5NTM1MmQwZC4uM2I3NTQzNDM3ZmFmODUwMjZkMDdkZWYxM2Y1YmQ3
NzYwOTczNzFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEyLTE4ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGludHJvZHVjZSBQYWdlLmNhcHR1cmVTY3JlZW5zaG90CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUzMTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCB3aWxsIGJlIHByaW1hcmlseSB1c2VkIGJ5
IHRoZSBhdXRvbWF0aW9uIGNsaWVudHMsIGJ1dCBtYXliZSB3ZSBmaW5kIGEgZ29vZCBwbGFjZQor
ICAgICAgICBmb3IgaXQgaW4gdGhlIGZyb250LWVuZCBhcyB3ZWxsLgorCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6Y2FwdHVyZVNjcmVlbnNo
b3QpOgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2Vu
dDo6Y2FwdHVyZVNjcmVlbnNob3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorCiAyMDEyLTEyLTE4ICBOYXRlIENoYXBpbiAg
PGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjEzNzYwNyk6IENh
bm5vdCBkb3dubG9hZCBmaWxlcywgc3R1Y2sgaW4g4oCcUHJlcGFyaW5nIHRvIGRvd25sb2Fk4oCd
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDlhYzhlMThjMmU3NmU0ZDEwZDAwMjlhZmZm
MTZkMjkyZmYyODY4YjYuLmE0NDk2ZDU2MDQwZWFiNDlkNmFjNjU0ZWYyYWNiMDAzY2UzNGY2NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMTItMTgg
IFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogaW50cm9kdWNlIFBhZ2UuY2FwdHVyZVNjcmVlbnNob3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTMxNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZXMgYSB3YXkgZm9yIGJy
b3dzZXIgdG8gaGFuZGxlIHByb3RvY29sIGNvbW1hbmRzLgorCisgICAgICAgICogcHVibGljL1dl
YkRldlRvb2xzQWdlbnQuaDoKKyAgICAgICAgKFdlYkRldlRvb2xzQWdlbnQpOgorICAgICAgICAq
IHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9y
Q2xpZW50SW1wbDo6Y2FwdHVyZVNjcmVlbnNob3QpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50
SW1wbCk6CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OldlYkRldlRvb2xzQWdlbnRJbXBsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OmNhcHR1cmVTY3JlZW5zaG90KToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBs
OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0Fn
ZW50Ojpicm93c2VySGFuZGxlZE1lc3NhZ2VQcmVmaXgpOgorICAgICAgICAqIHNyYy9XZWJEZXZU
b29sc0FnZW50SW1wbC5oOgorICAgICAgICAoV2ViRGV2VG9vbHNBZ2VudEltcGwpOgorCiAyMDEy
LTEyLTE3ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogcGFpbnQgaW5zcGVjdG9yIG92ZXJsYXkgb24gYSB0cmFuc3BhcmVuY3kg
bGF5ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
biBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA2OTM5OGU5
Mjg3NWYwYTE2NzhjOTljMTNjYmZhNzg4MzEyNzdkZGU4Li4yNmI2MTAwMmI3ZDQ3M2I0ODA2OGQ3
ODJmNDVjYjA2MGQ5ZGRiMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCkBAIC00NTYsNiArNDU2LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
dmlzaWJsZSIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSBmb3Igc2hv
d2luZyBjb21wb3NpdGluZyBib3JkZXJzLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgIm5hbWUiOiAiY2FwdHVyZVNjcmVlbnNob3QiLAorICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJDYXB0dXJlIHBhZ2Ugc2NyZWVuc2hvdC4iLAorICAgICAgICAg
ICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGEi
LCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiQmFzZTY0LWVuY29kZWQgaW1hZ2Ug
ZGF0YSAoUE5HKS4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJoaWRk
ZW4iOiB0cnVlCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBb
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZDBjNzUz
MWQ1ZTIyYjRlNzhmOWE0NDRlNmNlYmM3ZGNhYTU5MTlhMy4uOTQ4ZGYwMjhjYjc2OWEzNDMxYTYx
MjFlYmI5ODMwNzNjMGIwNWI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDbGllbnQuaApAQCAtODEsNiArODEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdl
dEFsbG9jYXRlZE9iamVjdHMoSGFzaFNldDxjb25zdCB2b2lkKj4mKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZHVtcFVuY291bnRlZEFsbG9jYXRlZE9iamVjdHMoY29uc3QgSGFzaE1hcDxjb25zdCB2
b2lkKiwgc2l6ZV90PiYpIHsgfQogCisgICAgdmlydHVhbCBib29sIGNhcHR1cmVTY3JlZW5zaG90
KFN0cmluZyopIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBzdGF0aWMgYm9vbCBkb0Rpc3BhdGNo
TWVzc2FnZU9uRnJvbnRlbmRQYWdlKFBhZ2UqIGZyb250ZW5kUGFnZSwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKaW5kZXggNGIzMDZmNzdhZmZmZDRiOGFmNWM3NDk1MTI2NjBhNjQwYWJkMmFm
Ni4uMmE4MDNhNDgxNTk3YjBiYzYzYzI3ZDYwYTEyZTdmYzMxZmY5ZDQwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTExOTgsNiAr
MTE5OCwxMiBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0Q29tcG9zaXRpbmdCb3JkZXJz
VmlzaWJsZShFcnJvclN0cmluZyosIGJvb2wgdmlzaWJsZQogICAgIHNldHRpbmdzLT5zZXRTaG93
UmVwYWludENvdW50ZXIodmlzaWJsZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpj
YXB0dXJlU2NyZWVuc2hvdChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFN0cmluZyogZGF0YSkK
K3sKKyAgICBpZiAoIW1fY2xpZW50LT5jYXB0dXJlU2NyZWVuc2hvdChkYXRhKSkKKyAgICAgICAg
KmVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBjYXB0dXJlIHNjcmVlbnNob3QuIjsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCA5M2ZlZDBl
MWZlYWVlMmE5ZWMxMWMwMWJhY2Y4MWM1Nzk3OGI1MDc3Li5hOTdjMTkxZjQyYzdhZWQ4MjU3NTM3
ODYzM2RiZmEyZTM1YWUwN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oCkBAIC0xMjMsNiArMTIzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJik7CiAgICAg
dmlydHVhbCB2b2lkIGdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JTdHJpbmcqLCBi
b29sKiBvdXRfcGFyYW0pOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wb3NpdGluZ0JvcmRlcnNW
aXNpYmxlKEVycm9yU3RyaW5nKiwgYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIGNhcHR1cmVTY3Jl
ZW5zaG90KEVycm9yU3RyaW5nKiwgU3RyaW5nKiBkYXRhKTsKIAogICAgIC8vIEdlb2xvY2F0aW9u
IG92ZXJyaWRlIGhlbHBlcnMuCiAgICAgR2VvbG9jYXRpb25Qb3NpdGlvbiogb3ZlcnJpZGVHZW9s
b2NhdGlvblBvc2l0aW9uKEdlb2xvY2F0aW9uUG9zaXRpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnQuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnQuaAppbmRleCBiNjExMDVkMjdkMmJl
NGY2ZWFjMWNkYTk3OWMwOGRkNGNkZmFjNzczLi4zZWRlM2JjN2NlNDM3NDAzM2RjNTdhODE0Nzk1
NTMzNjhmZjM2NWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJEZXZUb29sc0FnZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RGV2VG9vbHNBZ2VudC5oCkBAIC04Nyw4ICs4Nyw4IEBAIHB1YmxpYzoKICAgICAvLyBpbiBvcmRl
ciB0byBsZXQgaXQga25vdyB0aGF0IGl0IGhhcyBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgYWdlbnQu
CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViU3RyaW5nIHdvcmtlckRpc2Nvbm5lY3RlZEZy
b21Xb3JrZXJFdmVudCgpOwogCi0gICAgLy8gRklYTUU6IHJlbW92ZSBvbmNlIG1pZ3JhdGVkIHRv
IHdvcmtlckRpc2Nvbm5lY3RlZEZyb21Xb3JrZXJFdmVudCgpLgotICAgIFdFQktJVF9FWFBPUlQg
c3RhdGljIFdlYlN0cmluZyBkaXNjb25uZWN0RXZlbnRBc1RleHQoKTsKKyAgICAvLyBSZXR1cm5z
IHByZWZpeCBmb3IgdGhlIG1lc3NhZ2VzIHRoYXQgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGJy
b3dzZXIuCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViU3RyaW5nIGJyb3dzZXJIYW5kbGVk
TWVzc2FnZVByZWZpeCgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCmluZGV4IGVh
MGQxNGQ1MjBlMDkzZmY4YjUyYjdlNTE1ZjU3MmUyYmYyYjhlZTcuLmJhYjU4MTZiZmQ2OTA4ZWZh
MGY4YzE2OWYwYzgwMWEyNGM4NzkyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCkBAIC0xODksNiArMTg5LDEzIEBAIHZvaWQg
SW5zcGVjdG9yQ2xpZW50SW1wbDo6ZHVtcFVuY291bnRlZEFsbG9jYXRlZE9iamVjdHMoY29uc3Qg
SGFzaE1hcDxjb25zdCB2b2lkCiAgICAgICAgIGFnZW50LT5kdW1wVW5jb3VudGVkQWxsb2NhdGVk
T2JqZWN0cyhtYXApOwogfQogCitib29sIEluc3BlY3RvckNsaWVudEltcGw6OmNhcHR1cmVTY3Jl
ZW5zaG90KFN0cmluZyogZGF0YSkKK3sKKyAgICBpZiAoV2ViRGV2VG9vbHNBZ2VudEltcGwqIGFn
ZW50ID0gZGV2VG9vbHNBZ2VudCgpKQorICAgICAgICByZXR1cm4gYWdlbnQtPmNhcHR1cmVTY3Jl
ZW5zaG90KGRhdGEpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogV2ViRGV2VG9vbHNBZ2VudElt
cGwqIEluc3BlY3RvckNsaWVudEltcGw6OmRldlRvb2xzQWdlbnQoKQogewogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxXZWJEZXZUb29sc0FnZW50SW1wbCo+KG1faW5zcGVjdGVkV2ViVmlldy0+ZGV2
VG9vbHNBZ2VudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lu
c3BlY3RvckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3Rv
ckNsaWVudEltcGwuaAppbmRleCAyNWQ4NTk3ZjZmNTZmNmFhNzI0NDA2ZDI2NThmMTkxMGVhZGVm
NjA3Li4yMDMzZTNmNjkwOThiYjA5NmQwNTAwZjk1MTFjMDRmYTJkZmQ3NzQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCkBAIC04NCw2
ICs4NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QWxsb2NhdGVkT2JqZWN0cyhI
YXNoU2V0PGNvbnN0IHZvaWQqPiYpOwogICAgIHZpcnR1YWwgdm9pZCBkdW1wVW5jb3VudGVkQWxs
b2NhdGVkT2JqZWN0cyhjb25zdCBIYXNoTWFwPGNvbnN0IHZvaWQqLCBzaXplX3Q+Jik7CiAKKyAg
ICB2aXJ0dWFsIGJvb2wgY2FwdHVyZVNjcmVlbnNob3QoV1RGOjpTdHJpbmcqIGRhdGEpOworCiBw
cml2YXRlOgogICAgIFdlYkRldlRvb2xzQWdlbnRJbXBsKiBkZXZUb29sc0FnZW50KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNw
cAppbmRleCA3MTc1NGUyODg0ZGIwY2E5MWI3ZGRiMGQ2ODRkMTVkOTkyOGQ3NWQ2Li5mNDYxMTUw
NTMyNjQ2ZTI1MDExOTgyYjY5YjA1MmU4MGM5MjRjOTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCkBAIC03Nyw2ICs3Nyw4
IEBAIG5hbWVzcGFjZSBPdmVybGF5Wk9yZGVycyB7CiBzdGF0aWMgY29uc3QgaW50IGhpZ2hsaWdo
dCA9IDk5OwogfQogCitzdGF0aWMgY29uc3QgY2hhciBicm93c2VyTWVzc2FnZVByZWZpeFtdID0g
IiNicm93c2VyOiI7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBDbGllbnRNZXNzYWdl
TG9vcEFkYXB0ZXIgOiBwdWJsaWMgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpDbGllbnRNZXNzYWdl
TG9vcCB7CkBAIC0zNjYsNiArMzY4LDcgQEAgV2ViRGV2VG9vbHNBZ2VudEltcGw6OldlYkRldlRv
b2xzQWdlbnRJbXBsKAogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV93ZWJWaWV3SW1w
bCh3ZWJWaWV3SW1wbCkKICAgICAsIG1fYXR0YWNoZWQoZmFsc2UpCisgICAgLCBtX3NlbmRBc0Jy
b3dzZXJIYW5kbGVkKGZhbHNlKQogewogICAgIEFTU0VSVChtX2hvc3RJZCA+IDApOwogfQpAQCAt
NTY2LDYgKzU2OSwxNCBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkdW1wVW5jb3VudGVk
QWxsb2NhdGVkT2JqZWN0cyhjb25zdCBIYXNoTWFwPGNvbnN0IHZvaQogICAgIG1fY2xpZW50LT5k
dW1wVW5jb3VudGVkQWxsb2NhdGVkT2JqZWN0cygmcHJvdmlkZXIpOwogfQogCitib29sIFdlYkRl
dlRvb2xzQWdlbnRJbXBsOjpjYXB0dXJlU2NyZWVuc2hvdChXVEY6OlN0cmluZyogZGF0YSkKK3sK
KyAgICAvLyBTY3JlZW5zaG90IGlzIGdvaW5nIHRvIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIGFj
dHVhbCBkYXRhIG9uIHRoZSBicm93c2VyIGxldmVsLgorICAgICpkYXRhID0gIiNzY3JlZW5zaG90
IjsKKyAgICBtX3NlbmRBc0Jyb3dzZXJIYW5kbGVkID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlzcGF0Y2hPbkluc3BlY3RvckJhY2tl
bmQoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGluc3BlY3RvckNvbnRyb2xsZXIo
KS0+ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwpAQCAtNjMyLDExICs2NDMs
MTcgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6aGlkZUhpZ2hsaWdodCgpCiAKIGJvb2wg
V2ViRGV2VG9vbHNBZ2VudEltcGw6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7CisgICAgYm9vbCBicm93c2VySGFuZGxlZCA9IG1fc2VuZEFzQnJvd3Nlckhh
bmRsZWQ7CisgICAgbV9zZW5kQXNCcm93c2VySGFuZGxlZCA9IGZhbHNlOworCiAgICAgV2ViRGV2
VG9vbHNBZ2VudEltcGwqIGRldlRvb2xzQWdlbnQgPSBzdGF0aWNfY2FzdDxXZWJEZXZUb29sc0Fn
ZW50SW1wbCo+KG1fd2ViVmlld0ltcGwtPmRldlRvb2xzQWdlbnQoKSk7CiAgICAgaWYgKCFkZXZU
b29sc0FnZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2NsaWVudC0+c2VuZE1l
c3NhZ2VUb0luc3BlY3RvckZyb250ZW5kKG1lc3NhZ2UpOworICAgIGlmIChicm93c2VySGFuZGxl
ZCkKKyAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZChtYWtl
U3RyaW5nKGJyb3dzZXJNZXNzYWdlUHJlZml4LCBtZXNzYWdlKSk7CisgICAgZWxzZQorICAgICAg
ICBtX2NsaWVudC0+c2VuZE1lc3NhZ2VUb0luc3BlY3RvckZyb250ZW5kKG1lc3NhZ2UpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC03MzQsMTAgKzc1MSw5IEBAIFdlYlN0cmluZyBXZWJEZXZU
b29sc0FnZW50Ojp3b3JrZXJEaXNjb25uZWN0ZWRGcm9tV29ya2VyRXZlbnQoKQogICAgIHJldHVy
biBjaGFubmVsLm1fbWVzc2FnZTsKIH0KIAotLy8gRklYTUU6IHJlbW92ZSB0aGlzIG9uY2UgbWln
cmF0ZWQgdG8gd29ya2VyRGlzY29ubmVjdGVkRnJvbVdvcmtlckV2ZW50KCkuCi1XZWJTdHJpbmcg
V2ViRGV2VG9vbHNBZ2VudDo6ZGlzY29ubmVjdEV2ZW50QXNUZXh0KCkKK1dlYlN0cmluZyBXZWJE
ZXZUb29sc0FnZW50Ojpicm93c2VySGFuZGxlZE1lc3NhZ2VQcmVmaXgoKQogewotICAgIHJldHVy
biBXZWJEZXZUb29sc0FnZW50Ojp3b3JrZXJEaXNjb25uZWN0ZWRGcm9tV29ya2VyRXZlbnQoKTsK
KyAgICByZXR1cm4gU3RyaW5nKGJyb3dzZXJNZXNzYWdlUHJlZml4KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZUb29sc0FnZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuaAppbmRleCA3MzI1NmNmN2VmOTI4NzUxNmU5ZGNjZWUxM2EyNWY4NmVkMjQw
YWZlLi5jYjlkZmY5ZTYxMWYwYTgwMTc0MDhlZGNjNDQ5M2RiODRmNDgzZGIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKQEAgLTEx
MCw2ICsxMTAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEFsbG9jYXRlZE9iamVj
dHMoSGFzaFNldDxjb25zdCB2b2lkKj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcFVuY291bnRl
ZEFsbG9jYXRlZE9iamVjdHMoY29uc3QgSGFzaE1hcDxjb25zdCB2b2lkKiwgc2l6ZV90PiYpOwog
CisgICAgdmlydHVhbCBib29sIGNhcHR1cmVTY3JlZW5zaG90KFdURjo6U3RyaW5nKiBkYXRhKTsK
KwogICAgIGludCBob3N0SWQoKSB7IHJldHVybiBtX2hvc3RJZDsgfQogCiAgICAgLy8gV2ViUGFn
ZU92ZXJsYXkKQEAgLTEyOCw2ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIFdlYlZpZXdJbXBsKiBt
X3dlYlZpZXdJbXBsOwogICAgIGJvb2wgbV9hdHRhY2hlZDsKICAgICBPd25QdHI8RGV2aWNlTWV0
cmljc1N1cHBvcnQ+IG1fbWV0cmljc1N1cHBvcnQ7CisgICAgYm9vbCBtX3NlbmRBc0Jyb3dzZXJI
YW5kbGVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180147</attachid>
            <date>2012-12-19 06:06:40 -0800</date>
            <delta_ts>2012-12-20 01:38:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105315-20121219180356.patch</filename>
            <type>text/plain</type>
            <size>14617</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTcwODdkOGYxN2U1MThj
MjNlMzAyODg2MjY4MWU2YjQ5NTM1MmQwZC4uNzZmNTE1MzA4NTc1MDczMjc5MGFhYzRiZmZiMmE1
YTM1YjEyYTczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEyLTE5ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGludHJvZHVjZSBQYWdlLmNhcHR1cmVTY3JlZW5zaG90CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUzMTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCB3aWxsIGJlIHByaW1hcmlseSB1c2VkIGJ5
IHRoZSBhdXRvbWF0aW9uIGNsaWVudHMsIGJ1dCBtYXliZSB3ZSBmaW5kIGEgZ29vZCBwbGFjZQor
ICAgICAgICBmb3IgaXQgaW4gdGhlIGZyb250LWVuZCBhcyB3ZWxsLgorCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6Y2FwdHVyZVNjcmVlbnNo
b3QpOgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2Vu
dDo6Y2FwdHVyZVNjcmVlbnNob3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorCiAyMDEyLTEyLTE4ICBOYXRlIENoYXBpbiAg
PGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjEzNzYwNyk6IENh
bm5vdCBkb3dubG9hZCBmaWxlcywgc3R1Y2sgaW4g4oCcUHJlcGFyaW5nIHRvIGRvd25sb2Fk4oCd
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDlhYzhlMThjMmU3NmU0ZDEwZDAwMjlhZmZm
MTZkMjkyZmYyODY4YjYuLjlkYjM0NThmMDY3YjYyMDYwYjY1NDYxN2JiZDRkODMyZWQ5YTkzNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMTItMTkg
IFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogaW50cm9kdWNlIFBhZ2UuY2FwdHVyZVNjcmVlbnNob3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTMxNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZXMgYSB3YXkgZm9yIGJy
b3dzZXIgdG8gaGFuZGxlIHByb3RvY29sIGNvbW1hbmRzOgorICAgICAgICBlbWJlZGRlciB3aWxs
IGFzayBXZWJLaXQgd2hldGhlciBpdCBzaG91bGQgb3ZlcnJpZGUgdGhlIGNvbW1hbmQKKyAgICAg
ICAgcmVzdWx0IGFuZCB3aWxsIGdldCBhIGhpbnQgdmFsdWUuIEJhc2VkIG9uIHRoYXQgaGludCwg
YnJvd3NlcgorICAgICAgICB3aWxsIHByZXBhcmUgdGhlIGRhdGEgYW5kIGFzayBXZWJLaXQgYWdh
aW4gdG8gcGF0Y2ggdGhpcyBkYXRhIGluLgorCisgICAgICAgICogcHVibGljL1dlYkRldlRvb2xz
QWdlbnQuaDoKKyAgICAgICAgKFdlYkRldlRvb2xzQWdlbnQpOgorICAgICAgICAqIHNyYy9JbnNw
ZWN0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50SW1w
bDo6Y2FwdHVyZVNjcmVlbnNob3QpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMv
SW5zcGVjdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50SW1wbCk6Cisg
ICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKEJyb3dzZXJE
YXRhSGludFN0cmluZ1ZhbHVlcyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6V2ViRGV2VG9vbHNBZ2VudEltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6Y2FwdHVyZVNjcmVlbnNob3QpOgorICAgICAg
ICAoV2ViS2l0Ojpicm93c2VySGludFRvU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6YnJvd3Nl
ckhpbnRGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6
OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdl
bnQ6OnNob3VsZFBhdGNoV2l0aEJyb3dzZXJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2
VG9vbHNBZ2VudDo6cGF0Y2hXaXRoQnJvd3NlckRhdGEpOgorICAgICAgICAqIHNyYy9XZWJEZXZU
b29sc0FnZW50SW1wbC5oOgorICAgICAgICAoV2ViRGV2VG9vbHNBZ2VudEltcGwpOgorCiAyMDEy
LTEyLTE3ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogcGFpbnQgaW5zcGVjdG9yIG92ZXJsYXkgb24gYSB0cmFuc3BhcmVuY3kg
bGF5ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
biBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA2OTM5OGU5
Mjg3NWYwYTE2NzhjOTljMTNjYmZhNzg4MzEyNzdkZGU4Li4yNmI2MTAwMmI3ZDQ3M2I0ODA2OGQ3
ODJmNDVjYjA2MGQ5ZGRiMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCkBAIC00NTYsNiArNDU2LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
dmlzaWJsZSIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSBmb3Igc2hv
d2luZyBjb21wb3NpdGluZyBib3JkZXJzLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgIm5hbWUiOiAiY2FwdHVyZVNjcmVlbnNob3QiLAorICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJDYXB0dXJlIHBhZ2Ugc2NyZWVuc2hvdC4iLAorICAgICAgICAg
ICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGEi
LCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiQmFzZTY0LWVuY29kZWQgaW1hZ2Ug
ZGF0YSAoUE5HKS4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJoaWRk
ZW4iOiB0cnVlCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBb
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZDBjNzUz
MWQ1ZTIyYjRlNzhmOWE0NDRlNmNlYmM3ZGNhYTU5MTlhMy4uOTQ4ZGYwMjhjYjc2OWEzNDMxYTYx
MjFlYmI5ODMwNzNjMGIwNWI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDbGllbnQuaApAQCAtODEsNiArODEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdl
dEFsbG9jYXRlZE9iamVjdHMoSGFzaFNldDxjb25zdCB2b2lkKj4mKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZHVtcFVuY291bnRlZEFsbG9jYXRlZE9iamVjdHMoY29uc3QgSGFzaE1hcDxjb25zdCB2
b2lkKiwgc2l6ZV90PiYpIHsgfQogCisgICAgdmlydHVhbCBib29sIGNhcHR1cmVTY3JlZW5zaG90
KFN0cmluZyopIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBzdGF0aWMgYm9vbCBkb0Rpc3BhdGNo
TWVzc2FnZU9uRnJvbnRlbmRQYWdlKFBhZ2UqIGZyb250ZW5kUGFnZSwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKaW5kZXggNGIzMDZmNzdhZmZmZDRiOGFmNWM3NDk1MTI2NjBhNjQwYWJkMmFm
Ni4uMmE4MDNhNDgxNTk3YjBiYzYzYzI3ZDYwYTEyZTdmYzMxZmY5ZDQwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTExOTgsNiAr
MTE5OCwxMiBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0Q29tcG9zaXRpbmdCb3JkZXJz
VmlzaWJsZShFcnJvclN0cmluZyosIGJvb2wgdmlzaWJsZQogICAgIHNldHRpbmdzLT5zZXRTaG93
UmVwYWludENvdW50ZXIodmlzaWJsZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpj
YXB0dXJlU2NyZWVuc2hvdChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFN0cmluZyogZGF0YSkK
K3sKKyAgICBpZiAoIW1fY2xpZW50LT5jYXB0dXJlU2NyZWVuc2hvdChkYXRhKSkKKyAgICAgICAg
KmVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBjYXB0dXJlIHNjcmVlbnNob3QuIjsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCA5M2ZlZDBl
MWZlYWVlMmE5ZWMxMWMwMWJhY2Y4MWM1Nzk3OGI1MDc3Li5hOTdjMTkxZjQyYzdhZWQ4MjU3NTM3
ODYzM2RiZmEyZTM1YWUwN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oCkBAIC0xMjMsNiArMTIzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJik7CiAgICAg
dmlydHVhbCB2b2lkIGdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JTdHJpbmcqLCBi
b29sKiBvdXRfcGFyYW0pOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wb3NpdGluZ0JvcmRlcnNW
aXNpYmxlKEVycm9yU3RyaW5nKiwgYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIGNhcHR1cmVTY3Jl
ZW5zaG90KEVycm9yU3RyaW5nKiwgU3RyaW5nKiBkYXRhKTsKIAogICAgIC8vIEdlb2xvY2F0aW9u
IG92ZXJyaWRlIGhlbHBlcnMuCiAgICAgR2VvbG9jYXRpb25Qb3NpdGlvbiogb3ZlcnJpZGVHZW9s
b2NhdGlvblBvc2l0aW9uKEdlb2xvY2F0aW9uUG9zaXRpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnQuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnQuaAppbmRleCBiNjExMDVkMjdkMmJl
NGY2ZWFjMWNkYTk3OWMwOGRkNGNkZmFjNzczLi5lOTdiOTAyZDE4NDk5YjU4ZDM4ODJlZGZlMTIz
NGYwNjUyM2U2MDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJEZXZUb29sc0FnZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RGV2VG9vbHNBZ2VudC5oCkBAIC00Nyw2ICs0NywxMiBAQCBzdHJ1Y3QgV2ViVVJMRXJyb3I7CiAK
IGNsYXNzIFdlYkRldlRvb2xzQWdlbnQgewogcHVibGljOgorICAgIC8vIEhpbnQgZm9yIHRoZSBi
cm93c2VyIG9uIHRoZSBkYXRhIGl0IHNob3VsZCBwcmVwYXJlIGZvciBtZXNzYWdlIHBhdGNoaW5n
LgorICAgIGVudW0gQnJvd3NlckRhdGFIaW50IHsKKyAgICAgICAgQnJvd3NlckRhdGFIaW50Tm9u
ZSA9IDAsCisgICAgICAgIEJyb3dzZXJEYXRhSGludFNjcmVlbnNob3QgPSAxLAorICAgIH07CisK
ICAgICB2aXJ0dWFsIH5XZWJEZXZUb29sc0FnZW50KCkge30KIAogICAgIC8vIFJldHVybnMgV2Vi
S2l0IFdlYkluc3BlY3RvciBwcm90b2NvbCB2ZXJzaW9uLgpAQCAtODcsOCArOTMsMTIgQEAgcHVi
bGljOgogICAgIC8vIGluIG9yZGVyIHRvIGxldCBpdCBrbm93IHRoYXQgaXQgaGFzIGRpc2Nvbm5l
Y3RlZCBmcm9tIHRoZSBhZ2VudC4KICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTdHJpbmcg
d29ya2VyRGlzY29ubmVjdGVkRnJvbVdvcmtlckV2ZW50KCk7CiAKLSAgICAvLyBGSVhNRTogcmVt
b3ZlIG9uY2UgbWlncmF0ZWQgdG8gd29ya2VyRGlzY29ubmVjdGVkRnJvbVdvcmtlckV2ZW50KCku
Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViU3RyaW5nIGRpc2Nvbm5lY3RFdmVudEFzVGV4
dCgpOworICAgIC8vIERldGVybWluZXMgd2hldGhlciBnaXZlbiBtZXNzYWdlIHJlc3BvbnNlIHNo
b3VsZCBiZSBwYXRjaCB3aXRoIHRoZSBkYXRhIGNhbGN1bGF0ZCBpbiBicm93c2VyLgorICAgIC8v
IFJldHVybnMgdGhlIGhpbnQgb24gdGhlIGRhdGEgYnJvd3NlciBzaG91bGQgcHJlcGFyZSBmb3Ig
cGF0Y2hpbmcuCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgQnJvd3NlckRhdGFIaW50IHNob3Vs
ZFBhdGNoV2l0aEJyb3dzZXJEYXRhKGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHNpemVfdCBtZXNzYWdl
TGVuZ3RoKTsKKworICAgIC8vIFBhdGNoZXMgbWVzc2FnZSByZXNwb25zZSB3aXRoIHRoZSBkYXRh
IGNhbGN1bGF0ZWQgaW4gYnJvd3Nlci4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTdHJp
bmcgcGF0Y2hXaXRoQnJvd3NlckRhdGEoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLCBCcm93c2Vy
RGF0YUhpbnQsIGNvbnN0IFdlYlN0cmluZyYgaGludERhdGEpOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0
b3JDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNs
aWVudEltcGwuY3BwCmluZGV4IGVhMGQxNGQ1MjBlMDkzZmY4YjUyYjdlNTE1ZjU3MmUyYmYyYjhl
ZTcuLmJhYjU4MTZiZmQ2OTA4ZWZhMGY4YzE2OWYwYzgwMWEyNGM4NzkyNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCkBAIC0x
ODksNiArMTg5LDEzIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50SW1wbDo6ZHVtcFVuY291bnRlZEFs
bG9jYXRlZE9iamVjdHMoY29uc3QgSGFzaE1hcDxjb25zdCB2b2lkCiAgICAgICAgIGFnZW50LT5k
dW1wVW5jb3VudGVkQWxsb2NhdGVkT2JqZWN0cyhtYXApOwogfQogCitib29sIEluc3BlY3RvckNs
aWVudEltcGw6OmNhcHR1cmVTY3JlZW5zaG90KFN0cmluZyogZGF0YSkKK3sKKyAgICBpZiAoV2Vi
RGV2VG9vbHNBZ2VudEltcGwqIGFnZW50ID0gZGV2VG9vbHNBZ2VudCgpKQorICAgICAgICByZXR1
cm4gYWdlbnQtPmNhcHR1cmVTY3JlZW5zaG90KGRhdGEpOworICAgIHJldHVybiBmYWxzZTsKK30K
KwogV2ViRGV2VG9vbHNBZ2VudEltcGwqIEluc3BlY3RvckNsaWVudEltcGw6OmRldlRvb2xzQWdl
bnQoKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJEZXZUb29sc0FnZW50SW1wbCo+KG1f
aW5zcGVjdGVkV2ViVmlldy0+ZGV2VG9vbHNBZ2VudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaAppbmRleCAyNWQ4NTk3ZjZmNTZmNmFh
NzI0NDA2ZDI2NThmMTkxMGVhZGVmNjA3Li4yMDMzZTNmNjkwOThiYjA5NmQwNTAwZjk1MTFjMDRm
YTJkZmQ3NzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0
b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9y
Q2xpZW50SW1wbC5oCkBAIC04NCw2ICs4NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0QWxsb2NhdGVkT2JqZWN0cyhIYXNoU2V0PGNvbnN0IHZvaWQqPiYpOwogICAgIHZpcnR1YWwg
dm9pZCBkdW1wVW5jb3VudGVkQWxsb2NhdGVkT2JqZWN0cyhjb25zdCBIYXNoTWFwPGNvbnN0IHZv
aWQqLCBzaXplX3Q+Jik7CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FwdHVyZVNjcmVlbnNob3QoV1RG
OjpTdHJpbmcqIGRhdGEpOworCiBwcml2YXRlOgogICAgIFdlYkRldlRvb2xzQWdlbnRJbXBsKiBk
ZXZUb29sc0FnZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkRldlRvb2xzQWdlbnRJbXBsLmNwcAppbmRleCA3MTc1NGUyODg0ZGIwY2E5MWI3ZGRiMGQ2ODRk
MTVkOTkyOGQ3NWQ2Li40ZjJjZjI1MzQzZTBkM2RlZDJhYzRiNzkyMjQwZGZhZjJjZTU4MWZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudElt
cGwuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUHJv
dG9jb2xWZXJzaW9uLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAi
TWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgi
CkBAIC03OSw2ICs4MCwxMCBAQCBzdGF0aWMgY29uc3QgaW50IGhpZ2hsaWdodCA9IDk5OwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAorbmFtZXNwYWNlIEJyb3dzZXJEYXRhSGludFN0cmluZ1ZhbHVl
cyB7CitzdGF0aWMgY29uc3QgY2hhciBzY3JlZW5zaG90W10gPSAic2NyZWVuc2hvdCI7Cit9CisK
IGNsYXNzIENsaWVudE1lc3NhZ2VMb29wQWRhcHRlciA6IHB1YmxpYyBQYWdlU2NyaXB0RGVidWdT
ZXJ2ZXI6OkNsaWVudE1lc3NhZ2VMb29wIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBlbnN1
cmVDbGllbnRNZXNzYWdlTG9vcENyZWF0ZWQoV2ViRGV2VG9vbHNBZ2VudENsaWVudCogY2xpZW50
KQpAQCAtMzY2LDYgKzM3MSw3IEBAIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpXZWJEZXZUb29sc0Fn
ZW50SW1wbCgKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fd2ViVmlld0ltcGwod2Vi
Vmlld0ltcGwpCiAgICAgLCBtX2F0dGFjaGVkKGZhbHNlKQorICAgICwgbV9zZW5kV2l0aEJyb3dz
ZXJEYXRhSGludChCcm93c2VyRGF0YUhpbnROb25lKQogewogICAgIEFTU0VSVChtX2hvc3RJZCA+
IDApOwogfQpAQCAtNTY2LDYgKzU3MiwxNCBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpk
dW1wVW5jb3VudGVkQWxsb2NhdGVkT2JqZWN0cyhjb25zdCBIYXNoTWFwPGNvbnN0IHZvaQogICAg
IG1fY2xpZW50LT5kdW1wVW5jb3VudGVkQWxsb2NhdGVkT2JqZWN0cygmcHJvdmlkZXIpOwogfQog
Citib29sIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpjYXB0dXJlU2NyZWVuc2hvdChXVEY6OlN0cmlu
ZyogZGF0YSkKK3sKKyAgICAvLyBWYWx1ZSBpcyBnb2luZyB0byBiZSBzdWJzdGl0dXRlZCB3aXRo
IHRoZSBhY3R1YWwgZGF0YSBvbiB0aGUgYnJvd3NlciBsZXZlbC4KKyAgICAqZGF0YSA9ICJ7c2Ny
ZWVuc2hvdC1wbGFjZWhvbGRlcn0iOworICAgIG1fc2VuZFdpdGhCcm93c2VyRGF0YUhpbnQgPSBC
cm93c2VyRGF0YUhpbnRTY3JlZW5zaG90OworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFdl
YkRldlRvb2xzQWdlbnRJbXBsOjpkaXNwYXRjaE9uSW5zcGVjdG9yQmFja2VuZChjb25zdCBXZWJT
dHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNwYXRjaE1l
c3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CkBAIC02MzAsMTMgKzY0NCwzOSBAQCB2b2lkIFdl
YkRldlRvb2xzQWdlbnRJbXBsOjpoaWRlSGlnaGxpZ2h0KCkKICAgICBtX3dlYlZpZXdJbXBsLT5y
ZW1vdmVQYWdlT3ZlcmxheSh0aGlzKTsKIH0KIAorc3RhdGljIFN0cmluZyBicm93c2VySGludFRv
U3RyaW5nKFdlYkRldlRvb2xzQWdlbnQ6OkJyb3dzZXJEYXRhSGludCBkYXRhSGludCkKK3sKKyAg
ICBzd2l0Y2ggKGRhdGFIaW50KSB7CisgICAgY2FzZSBXZWJEZXZUb29sc0FnZW50OjpCcm93c2Vy
RGF0YUhpbnRTY3JlZW5zaG90OgorICAgICAgICByZXR1cm4gQnJvd3NlckRhdGFIaW50U3RyaW5n
VmFsdWVzOjpzY3JlZW5zaG90OworICAgIGNhc2UgV2ViRGV2VG9vbHNBZ2VudDo6QnJvd3NlckRh
dGFIaW50Tm9uZToKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitzdGF0aWMgV2ViRGV2VG9vbHNBZ2Vu
dDo6QnJvd3NlckRhdGFIaW50IGJyb3dzZXJIaW50RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHZh
bHVlKQoreworICAgIGlmICh2YWx1ZSA9PSBCcm93c2VyRGF0YUhpbnRTdHJpbmdWYWx1ZXM6OnNj
cmVlbnNob3QpCisgICAgICAgIHJldHVybiBXZWJEZXZUb29sc0FnZW50OjpCcm93c2VyRGF0YUhp
bnRTY3JlZW5zaG90OworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBXZWJE
ZXZUb29sc0FnZW50OjpCcm93c2VyRGF0YUhpbnROb25lOworfQorCiBib29sIFdlYkRldlRvb2xz
QWdlbnRJbXBsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
ewogICAgIFdlYkRldlRvb2xzQWdlbnRJbXBsKiBkZXZUb29sc0FnZW50ID0gc3RhdGljX2Nhc3Q8
V2ViRGV2VG9vbHNBZ2VudEltcGwqPihtX3dlYlZpZXdJbXBsLT5kZXZUb29sc0FnZW50KCkpOwog
ICAgIGlmICghZGV2VG9vbHNBZ2VudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9j
bGllbnQtPnNlbmRNZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZChtZXNzYWdlKTsKKyAgICBpZiAo
bV9zZW5kV2l0aEJyb3dzZXJEYXRhSGludCAhPSBCcm93c2VyRGF0YUhpbnROb25lKSB7CisgICAg
ICAgIFN0cmluZyBwcmVmaXggPSBicm93c2VySGludFRvU3RyaW5nKG1fc2VuZFdpdGhCcm93c2Vy
RGF0YUhpbnQpOworICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2VUb0luc3BlY3RvckZyb250
ZW5kKG1ha2VTdHJpbmcoIjwiLCBwcmVmaXgsICI+IiwgbWVzc2FnZSkpOworICAgIH0gZWxzZQor
ICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2VUb0luc3BlY3RvckZyb250ZW5kKG1lc3NhZ2Up
OworCisgICAgbV9zZW5kV2l0aEJyb3dzZXJEYXRhSGludCA9IEJyb3dzZXJEYXRhSGludE5vbmU7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTczNCwxMCArNzc0LDUzIEBAIFdlYlN0cmluZyBX
ZWJEZXZUb29sc0FnZW50Ojp3b3JrZXJEaXNjb25uZWN0ZWRGcm9tV29ya2VyRXZlbnQoKQogICAg
IHJldHVybiBjaGFubmVsLm1fbWVzc2FnZTsKIH0KIAotLy8gRklYTUU6IHJlbW92ZSB0aGlzIG9u
Y2UgbWlncmF0ZWQgdG8gd29ya2VyRGlzY29ubmVjdGVkRnJvbVdvcmtlckV2ZW50KCkuCi1XZWJT
dHJpbmcgV2ViRGV2VG9vbHNBZ2VudDo6ZGlzY29ubmVjdEV2ZW50QXNUZXh0KCkKK1dlYkRldlRv
b2xzQWdlbnQ6OkJyb3dzZXJEYXRhSGludCBXZWJEZXZUb29sc0FnZW50OjpzaG91bGRQYXRjaFdp
dGhCcm93c2VyRGF0YShjb25zdCBjaGFyKiBtZXNzYWdlLCBzaXplX3QgbWVzc2FnZUxlbmd0aCkK
IHsKLSAgICByZXR1cm4gV2ViRGV2VG9vbHNBZ2VudDo6d29ya2VyRGlzY29ubmVjdGVkRnJvbVdv
cmtlckV2ZW50KCk7CisgICAgaWYgKCFtZXNzYWdlTGVuZ3RoIHx8IG1lc3NhZ2VbMF0gIT0gJzwn
KQorICAgICAgICByZXR1cm4gQnJvd3NlckRhdGFIaW50Tm9uZTsKKworICAgIFN0cmluZyBtZXNz
YWdlU3RyaW5nKG1lc3NhZ2UsIG1lc3NhZ2VMZW5ndGgpOworICAgIHNpemVfdCBoaW50RW5kID0g
bWVzc2FnZVN0cmluZy5maW5kKCI+IiwgMSk7CisgICAgaWYgKGhpbnRFbmQgPT0gbm90Rm91bmQp
CisgICAgICAgIHJldHVybiBCcm93c2VyRGF0YUhpbnROb25lOworICAgIG1lc3NhZ2VTdHJpbmcg
PSBtZXNzYWdlU3RyaW5nLnN1YnN0cmluZygxLCBoaW50RW5kIC0gMSk7CisgICAgcmV0dXJuIGJy
b3dzZXJIaW50RnJvbVN0cmluZyhtZXNzYWdlU3RyaW5nKTsKK30KKworV2ViU3RyaW5nIFdlYkRl
dlRvb2xzQWdlbnQ6OnBhdGNoV2l0aEJyb3dzZXJEYXRhKGNvbnN0IFdlYlN0cmluZyYgbWVzc2Fn
ZSwgQnJvd3NlckRhdGFIaW50IGRhdGFIaW50LCBjb25zdCBXZWJTdHJpbmcmIGhpbnREYXRhKQor
eworICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZTsKKyAgICBzaXplX3QgaGludEVu
ZCA9IG1lc3NhZ2VTdHJpbmcuZmluZCgiPiIpOworICAgIGlmIChoaW50RW5kID09IG5vdEZvdW5k
KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbWVzc2Fn
ZTsKKyAgICB9CisKKyAgICBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZVN0cmluZy5zdWJzdHJpbmco
aGludEVuZCArIDEpOworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gbWVzc2FnZU9iamVjdCA9
IEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04obWVzc2FnZVN0cmluZyk7CisgICAgaWYgKCFtZXNz
YWdlT2JqZWN0IHx8IG1lc3NhZ2VPYmplY3QtPnR5cGUoKSAhPSBJbnNwZWN0b3JWYWx1ZTo6VHlw
ZU9iamVjdCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IG1lc3NhZ2VTdHJpbmc7CisgICAgfQorCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVz
dWx0T2JqZWN0ID0gbWVzc2FnZU9iamVjdC0+YXNPYmplY3QoKS0+Z2V0T2JqZWN0KCJyZXN1bHQi
KTsKKyAgICBpZiAoIXJlc3VsdE9iamVjdCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2VTdHJpbmc7CisgICAgfQorCisgICAgLy8gUGF0Y2gg
bWVzc2FnZSBiZWxvdy4KKyAgICBzd2l0Y2ggKGRhdGFIaW50KSB7CisgICAgY2FzZSBCcm93c2Vy
RGF0YUhpbnRTY3JlZW5zaG90OgorICAgICAgICB7CisgICAgICAgICAgICByZXN1bHRPYmplY3Qt
PnNldFN0cmluZygiZGF0YSIsIGhpbnREYXRhKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgY2FzZSBCcm93c2VyRGF0YUhpbnROb25lOgorICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gbWVzc2FnZU9iamVjdC0+
dG9KU09OU3RyaW5nKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKaW5kZXggNzMyNTZj
ZjdlZjkyODc1MTZlOWRjY2VlMTNhMjVmODZlZDI0MGFmZS4uZTBmMmIxNGFiYjU3MmJiMzM4YWE0
NWViM2JjMmM4YTRmODM2OWExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCkBAIC0xMTAsNiArMTEwLDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBnZXRBbGxvY2F0ZWRPYmplY3RzKEhhc2hTZXQ8Y29uc3Qgdm9pZCo+Jik7
CiAgICAgdmlydHVhbCB2b2lkIGR1bXBVbmNvdW50ZWRBbGxvY2F0ZWRPYmplY3RzKGNvbnN0IEhh
c2hNYXA8Y29uc3Qgdm9pZCosIHNpemVfdD4mKTsKIAorICAgIHZpcnR1YWwgYm9vbCBjYXB0dXJl
U2NyZWVuc2hvdChXVEY6OlN0cmluZyogZGF0YSk7CisKICAgICBpbnQgaG9zdElkKCkgeyByZXR1
cm4gbV9ob3N0SWQ7IH0KIAogICAgIC8vIFdlYlBhZ2VPdmVybGF5CkBAIC0xMjgsNiArMTMwLDcg
QEAgcHJpdmF0ZToKICAgICBXZWJWaWV3SW1wbCogbV93ZWJWaWV3SW1wbDsKICAgICBib29sIG1f
YXR0YWNoZWQ7CiAgICAgT3duUHRyPERldmljZU1ldHJpY3NTdXBwb3J0PiBtX21ldHJpY3NTdXBw
b3J0OworICAgIEJyb3dzZXJEYXRhSGludCBtX3NlbmRXaXRoQnJvd3NlckRhdGFIaW50OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="197308"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>