<?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>24692</bug_id>
          
          <creation_ts>2009-03-18 18:53:16 -0700</creation_ts>
          <short_desc>Allow ChromeClientChromium to access an HTML select element&apos;s menu items</short_desc>
          <delta_ts>2009-04-07 14:43:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Paul Godavari">paul</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>fishd</cc>
    
    <cc>jcampan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>114272</commentid>
    <comment_count>0</comment_count>
    <who name="Paul Godavari">paul</who>
    <bug_when>2009-03-18 18:53:16 -0700</bug_when>
    <thetext>Chromium&apos;s HTML select element menus will be rendered with native cocoa controls on Mac OS X in the browser process. This change will allow Chromium&apos;s ChromeClient to access the menu items in the PopupMenu for marshalling to the browser process or another host (test_shell, for example).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114273</commentid>
    <comment_count>1</comment_count>
      <attachid>28743</attachid>
    <who name="Paul Godavari">paul</who>
    <bug_when>2009-03-18 19:00:09 -0700</bug_when>
    <thetext>Created attachment 28743
Allows ChromeClientChromium to access popup menu items</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114348</commentid>
    <comment_count>2</comment_count>
      <attachid>28757</attachid>
    <who name="Paul Godavari">paul</who>
    <bug_when>2009-03-19 12:29:04 -0700</bug_when>
    <thetext>Created attachment 28757
Updated patch to allow platform specific handling of Chromium HTML select popups

Updated patch which removes unnecessary includes and adds the update to ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114578</commentid>
    <comment_count>3</comment_count>
      <attachid>28757</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-03-20 15:59:57 -0700</bug_when>
    <thetext>Comment on attachment 28757
Updated patch to allow platform specific handling of Chromium HTML select popups

Windows and Linux implementations are exactly the same, and it is bad to duplicate code.  How about using #ifdefs in PopupMenuChromium.cpp to select between Mac and non-Mac?

also, it seems like it would be nicer to have a single struct that contains the entire &apos;model&apos; for the PopupMenu.  that would include itemHeight, selectedIndex and menuItems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114889</commentid>
    <comment_count>4</comment_count>
      <attachid>28880</attachid>
    <who name="Paul Godavari">paul</who>
    <bug_when>2009-03-23 17:27:47 -0700</bug_when>
    <thetext>Created attachment 28880
Updated patch for handling select elements in the chromium port

1. Removed the per platform files and used PLATFORM(DARWIN) for determining whether to call show() or showSelect().

2. I didn&apos;t create a struct for the PopupListBox data, since we&apos;re only interested in a part of it (item height, selected index and item list), and there remains several other data members. It just seems a little strange to include some members and not the others in the struct. If you feel strongly about it, I&apos;ll make that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115210</commentid>
    <comment_count>5</comment_count>
      <attachid>28880</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-03-25 13:24:47 -0700</bug_when>
    <thetext>Comment on attachment 28880
Updated patch for handling select elements in the chromium port

&gt;Index: WebCore/page/chromium/ChromeClientChromium.h
...
&gt;         // Notifies the client of a new popup widget.  The client should place
&gt;         // and size the widget with the given bounds, relative to the screen.
&gt;         virtual void popupOpened(FramelessScrollView* popupView, const IntRect&amp; bounds, bool focusOnShow) = 0;
&gt;+
&gt;+        // Similar to popupOpened above, but used for clients that will draw the
&gt;+        // popup menu with native controls and thus need a more information.
&gt;+        virtual void popupOpenedWithItems(FramelessScrollView* popupView, const IntRect&amp; bounds,
&gt;+                                          bool focusOnShow, int itemHeight, int selectedIndex,
&gt;+                                          const Vector&lt;PopupListData*&gt;&amp; menuItems) = 0;

train of thought here, sorry...

it occurs to me that in layout-test mode of test_shell we don&apos;t currently
have a way to run the tests that probe the drop-down select.  perhaps what
you are doing here would be reusable there.  that&apos;s an argument in favor
of not wrapping this new method in an #ifdef :)

perhaps we should also have a static setter on PopupContainer that can be
used to switch between modes?  so instead of an #ifdef, we&apos;d have the Mac
code call that setter at startup.

Just commenting on this API, I&apos;m surprised that you are not also passing
the PopupMenuStyle object.  It seems like we need to still respect some
of the styling options.

popupOpenedWithItems seems like a poor name for this.  what we are really
doing is asking the client to open a popup for us, and we are giving it
all of the data for that.

Maybe the better choice here would be to just pass the PopupContainer as
the parameter to popupOpened.  Then, the popupOpened implementation could
just read the menuItems, itemHeight, and selectedIndex from that.  Then
we would not need a new method on ChromeClientChromium.


&gt;Index: WebCore/platform/chromium/PopupMenuChromium.cpp
...
&gt; PopupContainer::~PopupContainer()
&gt; {
&gt;+#if !PLATFORM(DARWIN)
&gt;     if (m_listBox)
&gt;         removeChild(m_listBox.get());
&gt;+#endif

instead, it seems like we should just check if m_listBox has a parent.

      if (m_listBox &amp;&amp; m_listBox-&gt;parent())
          removeChild(m_listBox);


&gt;+void PopupContainer::showSelect(const IntRect&amp; rect, FrameView* v, int index)
&gt;+{
&gt;+     if (!listBox())
&gt;+        return;
&gt;+     
&gt;+     listBox()-&gt;updateFromElement();
&gt;+     
&gt;+     // Get the ChromeClient and pass it the popup menu&apos;s listbox data.
&gt;+     ChromeClientChromium* client = static_cast&lt;ChromeClientChromium*&gt;(v-&gt;frame()-&gt;page()-&gt;chrome()-&gt;client());

nit: this line is really long.  can you wrap it like we do in showPopup?


&gt;+void PopupMenu::show(const IntRect&amp; r, FrameView* v, int index)
&gt; {
&gt;     if (!p.popup)
&gt;         p.popup = PopupContainer::create(client(), dropDownSettings);
&gt;+#if PLATFORM(DARWIN)
&gt;+    p.popup-&gt;showSelect(r, v, index);
&gt;+#else
&gt;     p.popup-&gt;show(r, v, index);
&gt;+#endif

maybe the #ifdef should just move into the PopupContainer::show method
since otherwise the show method doesn&apos;t make sense on ChromiumMac?


&gt;Index: WebCore/platform/chromium/PopupMenuChromium.h
...
&gt;+    // A container for the data for each menu item (represented by &lt;option&gt; or

nit: please put &quot;e.g., &quot; in front of &quot;represented&quot; since that is only
one such case where this could be used.


&gt;+    // &lt;optgroup&gt; in a &lt;select&gt; widget) and is used by PopupListBox.
&gt;+    typedef struct PopupListData {

please remove the typedef.  it should just be &quot;struct PopupListData {&quot;

also, I think a better name for this is PopupItem.


&gt;+        enum Type {
&gt;+            TypeOption = 0,

nit: no need to initialize to 0 explicitly.


&gt;+            TypeGroup,
&gt;+            TypeSeparator
&gt;+        };
&gt;+
&gt;+        PopupListData(const String&amp; label, Type type)
&gt;+            : label(label.copy()), type(type), y(0) {}

nit: the .copy() call is unnecessary.  just use the copy-constructor.


&gt;+        // Used on Mac Chromium for HTML Select menus.
&gt;+        void showSelect(const IntRect&amp;, FrameView*, int index);

this comment is a little off since this code is used for more than just
HTML select menus.  It is also used for the autocomplete dropdown, and
there is another HTML usage as well.  Can you come up with a better
name for this method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115939</commentid>
    <comment_count>6</comment_count>
      <attachid>29099</attachid>
    <who name="Paul Godavari">paul</who>
    <bug_when>2009-03-30 17:04:19 -0700</bug_when>
    <thetext>Created attachment 29099
Updated patch for handling HTML selects using native controls on the Mac

I believe this patch addresses your previous comments and our discussions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116471</commentid>
    <comment_count>7</comment_count>
      <attachid>29099</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-04-03 13:01:09 -0700</bug_when>
    <thetext>Comment on attachment 29099
Updated patch for handling HTML selects using native controls on the Mac

&gt; Index: WebCore/page/chromium/ChromeClientChromium.h

&gt; +        // If handleExternal is true, then then drawing and input handling for

nit: &quot;then then&quot;


&gt; Index: WebCore/platform/chromium/PopupMenuChromium.cpp

&gt; +void PopupContainer::showSelectPopup(const IntRect&amp; rect, FrameView* v, int index)

nit: I think this name could be better.  Afterall, the other &quot;show&quot; method is
also used to render SELECT popups, so this name doesn&apos;t really make sense.
How about showExternal?  That matches up with handleExternal being true in
the popupOpened call.


&gt; +void PopupMenu::show(const IntRect&amp; r, FrameView* v, int index)
&gt;  {
&gt;      if (!p.popup)
&gt;          p.popup = PopupContainer::create(client(), dropDownSettings);
&gt; +#if PLATFORM(DARWIN)
&gt; +    p.popup-&gt;showSelectPopup(r, v, index);
&gt; +#else
&gt;      p.popup-&gt;show(r, v, index);
&gt; +#endif

nit: Please add a comment here explaining why there is a platform
difference.


&gt; Index: WebCore/platform/chromium/PopupMenuChromium.h
...
&gt; +        PopupItem(const String&amp; label, Type type)
&gt; +            : label(label), type(type), y(0) {}

nit: WebKit style is one initializer per line and write &quot;{ }&quot; instead of &quot;{}&quot;


&gt; +        String label;
&gt; +        Type type;
&gt; +        int y;  // y offset of this item, relative to the top of the popup.

Perhaps this variable would be better named &quot;offset&quot;


&gt; -
&gt; +      

please make sure that blank lines do not have any whitespaces.


OK, looks like this is getting really close.  One more update should do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116487</commentid>
    <comment_count>8</comment_count>
      <attachid>29242</attachid>
    <who name="Paul Godavari">paul</who>
    <bug_when>2009-04-03 14:24:02 -0700</bug_when>
    <thetext>Created attachment 29242
Update for handling Mac Chromium popups with native controls

Updated patch as per previous review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116488</commentid>
    <comment_count>9</comment_count>
      <attachid>29242</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-04-03 14:26:36 -0700</bug_when>
    <thetext>Comment on attachment 29242
Update for handling Mac Chromium popups with native controls

&gt; Index: WebCore/ChangeLog
...
&gt; +        (WebCore::PopupContainer::showSelectPopup):

ChangeLog was not updated to match the function renaming.

Otherwise, LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116489</commentid>
    <comment_count>10</comment_count>
      <attachid>29243</attachid>
    <who name="Paul Godavari">paul</who>
    <bug_when>2009-04-03 14:37:31 -0700</bug_when>
    <thetext>Created attachment 29243
Same as previous patch, but with updated ChangeLog

Identical to previous patch, but with a properly updated ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116803</commentid>
    <comment_count>11</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-04-07 14:43:03 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/42287.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28743</attachid>
            <date>2009-03-18 19:00:09 -0700</date>
            <delta_ts>2009-03-19 12:29:04 -0700</delta_ts>
            <desc>Allows ChromeClientChromium to access popup menu items</desc>
            <filename>mac_cr_popups</filename>
            <type>text/plain</type>
            <size>20539</size>
            <attacher name="Paul Godavari">paul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oCShy
ZXZpc2lvbiA0MTgxOCkKKysrIFdlYkNvcmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJv
bWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgRnJhbWVsZXNzU2Nyb2xsVmlldzsKICAgICBjbGFzcyBJbnRSZWN0Owor
ICAgIHN0cnVjdCBQb3B1cExpc3REYXRhOwogCiAgICAgLy8gQ29udGFpbnMgQ2hyb21pdW0tc3Bl
Y2lmaWMgZXh0ZW5zaW9ucyB0byB0aGUgQ2hyb21lQ2xpZW50LiAgT25seSBwdXQKICAgICAvLyB0
aGluZ3MgaGVyZSB0aGF0IGRvbid0IG1ha2Ugc2Vuc2UgZm9yIG90aGVyIHBvcnRzLgpAQCAtNDUs
NiArNDYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBOb3RpZmllcyB0aGUg
Y2xpZW50IG9mIGEgbmV3IHBvcHVwIHdpZGdldC4gIFRoZSBjbGllbnQgc2hvdWxkIHBsYWNlCiAg
ICAgICAgIC8vIGFuZCBzaXplIHRoZSB3aWRnZXQgd2l0aCB0aGUgZ2l2ZW4gYm91bmRzLCByZWxh
dGl2ZSB0byB0aGUgc2NyZWVuLgogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9wdXBPcGVuZWQoRnJh
bWVsZXNzU2Nyb2xsVmlldyogcG9wdXBWaWV3LCBjb25zdCBJbnRSZWN0JiBib3VuZHMsIGJvb2wg
Zm9jdXNPblNob3cpID0gMDsKKworICAgICAgICAvLyBTaW1pbGFyIHRvIHBvcHVwT3BlbmVkIGFi
b3ZlLCBidXQgdXNlZCBmb3IgY2xpZW50cyB0aGF0IHdpbGwgZHJhdyB0aGUKKyAgICAgICAgLy8g
cG9wdXAgbWVudSB3aXRoIG5hdGl2ZSBjb250cm9scyBhbmQgdGh1cyBuZWVkIGEgbW9yZSBpbmZv
cm1hdGlvbi4KKyAgICAgICAgdmlydHVhbCB2b2lkIHBvcHVwT3BlbmVkV2l0aEl0ZW1zKEZyYW1l
bGVzc1Njcm9sbFZpZXcqIHBvcHVwVmlldywgY29uc3QgSW50UmVjdCYgYm91bmRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmb2N1c09uU2hvdywgaW50
IGl0ZW1IZWlnaHQsIGludCBzZWxlY3RlZEluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFBvcHVwTGlzdERhdGEqPiYgbWVudUl0ZW1z
KSA9IDA7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDQx
ODE4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDE1ICs2OSw2IEBAIHN0YXRpYyBjb25zdCBpbnQga01heEhl
aWdodCA9IDUwMDsKIHN0YXRpYyBjb25zdCBpbnQga0JvcmRlclNpemUgPSAxOwogc3RhdGljIGNv
bnN0IFRpbWVTdGFtcCBrVHlwZUFoZWFkVGltZW91dE1zID0gMTAwMDsKIAotLy8gVGhlIHNldHRp
bmdzIHVzZWQgZm9yIHRoZSBkcm9wIGRvd24gbWVudS4KLS8vIFRoaXMgaXMgdGhlIGRlbGVnYXRl
IHVzZWQgaWYgbm9uZSBpcyBwcm92aWRlZC4KLXN0YXRpYyBjb25zdCBQb3B1cENvbnRhaW5lclNl
dHRpbmdzIGRyb3BEb3duU2V0dGluZ3MgPSB7Ci0gICAgdHJ1ZSwgLy8gZm9jdXNPblNob3cKLSAg
ICB0cnVlLCAvLyBzZXRUZXh0T25JbmRleENoYW5nZQotICAgIHRydWUsIC8vIGFjY2VwdE9uQWJh
bmRvbgotICAgIGZhbHNlIC8vIGxvb3BTZWxlY3Rpb25OYXZpZ2F0aW9uCi19OwotCiAvLyBUaGlz
IGNsYXNzIHVzZXMgV2ViQ29yZSBjb2RlIHRvIHBhaW50IGFuZCBoYW5kbGUgZXZlbnRzIGZvciBh
IGRyb3AtZG93biBsaXN0CiAvLyBib3ggKCJjb21ib2JveCIgb24gV2luZG93cykuCiBjbGFzcyBQ
b3B1cExpc3RCb3ggOiBwdWJsaWMgRnJhbWVsZXNzU2Nyb2xsVmlldywgcHVibGljIFJlZkNvdW50
ZWQ8UG9wdXBMaXN0Qm94PiB7CkBAIC0xMzYsMjYgKzEyNywxOSBAQCBwdWJsaWM6CiAgICAgLy8g
UmV0dXJucyB3aGV0aGVyIHRoZSBwb3B1cCB3YW50cyB0byBwcm9jZXNzIGV2ZW50cyBmb3IgdGhl
IHBhc3NlZCBrZXkuCiAgICAgYm9vbCBpc0ludGVyZXN0ZWRJbkV2ZW50Rm9yS2V5KGludCBrZXlD
b2RlKTsKIAorICAgIC8vIEdldHMgdGhlIGhlaWdodCBvZiBhIHJvdy4KKyAgICBpbnQgZ2V0Um93
SGVpZ2h0KGludCBpbmRleCk7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHNlbGVjdGlv
biBjYW4gYmUgY2hhbmdlZCB0byBpbmRleC4KKyAgICAvLyBEaXNhYmxlZCBpdGVtcywgb3IgbGFi
ZWxzIGNhbm5vdCBiZSBzZWxlY3RlZC4KKyAgICBib29sIGlzU2VsZWN0YWJsZUl0ZW0oaW50IGlu
ZGV4KTsKKworICAgIGNvbnN0IFZlY3RvcjxQb3B1cExpc3REYXRhKj4mIGl0ZW1zKCkgY29uc3Qg
eyByZXR1cm4gbV9pdGVtczsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQb3B1cENv
bnRhaW5lcjsKICAgICBmcmllbmQgY2xhc3MgUmVmQ291bnRlZDxQb3B1cExpc3RCb3g+OwogCi0g
ICAgLy8gQSB0eXBlIG9mIExpc3QgSXRlbQotICAgIGVudW0gTGlzdEl0ZW1UeXBlIHsKLSAgICAg
ICAgVHlwZU9wdGlvbiwKLSAgICAgICAgVHlwZUdyb3VwLAotICAgICAgICBUeXBlU2VwYXJhdG9y
Ci0gICAgfTsKLQotICAgIC8vIEEgaXRlbSAocmVwcmVzZW50ZWQgYnkgPG9wdGlvbj4gb3IgPG9w
dGdyb3VwPikgaW4gdGhlIDxzZWxlY3Q+IHdpZGdldC4gCi0gICAgc3RydWN0IExpc3RJdGVtIHsK
LSAgICAgICAgTGlzdEl0ZW0oY29uc3QgU3RyaW5nJiBsYWJlbCwgTGlzdEl0ZW1UeXBlIHR5cGUp
Ci0gICAgICAgICAgICA6IGxhYmVsKGxhYmVsLmNvcHkoKSksIHR5cGUodHlwZSksIHkoMCkge30K
LSAgICAgICAgU3RyaW5nIGxhYmVsOwotICAgICAgICBMaXN0SXRlbVR5cGUgdHlwZTsKLSAgICAg
ICAgaW50IHk7ICAvLyB5IG9mZnNldCBvZiB0aGlzIGl0ZW0sIHJlbGF0aXZlIHRvIHRoZSB0b3Ag
b2YgdGhlIHBvcHVwLgotICAgIH07Ci0KICAgICBQb3B1cExpc3RCb3goUG9wdXBNZW51Q2xpZW50
KiBjbGllbnQsIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MmIHNldHRpbmdzKQogICAgICAg
ICA6IG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgICAgICwgbV9vcmlnaW5hbEluZGV4KDApCkBA
IC0xODQsMTAgKzE2OCw2IEBAIHByaXZhdGU6CiAgICAgLy8gdGhlIHdlYiBwYWdlLCBhbmQgY2xv
c2VzIHRoZSBwb3B1cC4KICAgICB2b2lkIGFjY2VwdEluZGV4KGludCBpbmRleCk7CiAKLSAgICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIHNlbGVjdGlvbiBjYW4gYmUgY2hhbmdlZCB0byBpbmRleC4K
LSAgICAvLyBEaXNhYmxlZCBpdGVtcywgb3IgbGFiZWxzIGNhbm5vdCBiZSBzZWxlY3RlZC4KLSAg
ICBib29sIGlzU2VsZWN0YWJsZUl0ZW0oaW50IGluZGV4KTsKLQogICAgIC8vIENsZWFycyB0aGUg
c2VsZWN0aW9uIChzbyBubyByb3cgYXBwZWFycyBzZWxlY3RlZCkuCiAgICAgdm9pZCBjbGVhclNl
bGVjdGlvbigpOwogCkBAIC0xOTgsOCArMTc4LDYgQEAgcHJpdmF0ZToKICAgICAvLyBJbnZhbGlk
YXRlcyB0aGUgcm93IGF0IHRoZSBnaXZlbiBpbmRleC4gCiAgICAgdm9pZCBpbnZhbGlkYXRlUm93
KGludCBpbmRleCk7CiAKLSAgICAvLyBHZXRzIHRoZSBoZWlnaHQgb2YgYSByb3cuCi0gICAgaW50
IGdldFJvd0hlaWdodChpbnQgaW5kZXgpOwogICAgIC8vIEdldCB0aGUgYm91bmRzIG9mIGEgcm93
LiAKICAgICBJbnRSZWN0IGdldFJvd0JvdW5kcyhpbnQgaW5kZXgpOwogCkBAIC0yNTAsNyArMjI4
LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9iYXNlV2lkdGg7CiAKICAgICAvLyBBIGxpc3Qgb2Yg
dGhlIG9wdGlvbnMgY29udGFpbmVkIHdpdGhpbiB0aGUgPHNlbGVjdD4KLSAgICBWZWN0b3I8TGlz
dEl0ZW0qPiBtX2l0ZW1zOworICAgIFZlY3RvcjxQb3B1cExpc3REYXRhKj4gbV9pdGVtczsKIAog
ICAgIC8vIFRoZSA8c2VsZWN0PiBQb3B1cE1lbnVDbGllbnQgdGhhdCBvcGVuZWQgdXMuCiAgICAg
UG9wdXBNZW51Q2xpZW50KiBtX3BvcHVwQ2xpZW50OwpAQCAtMzA1LDIxICsyODMsMjUgQEAgc3Rh
dGljIFBsYXRmb3JtV2hlZWxFdmVudCBjb25zdHJ1Y3RSZWxhdAogCiAvLyBzdGF0aWMKIFBhc3NS
ZWZQdHI8UG9wdXBDb250YWluZXI+IFBvcHVwQ29udGFpbmVyOjpjcmVhdGUoUG9wdXBNZW51Q2xp
ZW50KiBjbGllbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MmIHNldHRpbmdzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb3B1cENvbnRh
aW5lclNldHRpbmdzJiBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBzaG91bGRNYW5hZ2VMaXN0KQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUG9wdXBDb250YWluZXIoY2xpZW50LCBzZXR0aW5ncykpOworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUG9wdXBDb250YWluZXIoY2xpZW50LCBzZXR0aW5ncywgc2hvdWxkTWFu
YWdlTGlzdCkpOwogfQogCi1Qb3B1cENvbnRhaW5lcjo6UG9wdXBDb250YWluZXIoUG9wdXBNZW51
Q2xpZW50KiBjbGllbnQsIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MmIHNldHRpbmdzKQor
UG9wdXBDb250YWluZXI6OlBvcHVwQ29udGFpbmVyKFBvcHVwTWVudUNsaWVudCogY2xpZW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGlu
Z3MmIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2hvdWxk
TWFuYWdlTGlzdCkKICAgICA6IG1fbGlzdEJveChQb3B1cExpc3RCb3g6OmNyZWF0ZShjbGllbnQs
IHNldHRpbmdzKSkKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCisgICAgLCBtX3Nob3VsZE1h
bmFnZUxpc3Qoc2hvdWxkTWFuYWdlTGlzdCkKIHsKICAgICBzZXRTY3JvbGxiYXJNb2RlcyhTY3Jv
bGxiYXJBbHdheXNPZmYsIFNjcm9sbGJhckFsd2F5c09mZik7CiB9CiAKIFBvcHVwQ29udGFpbmVy
Ojp+UG9wdXBDb250YWluZXIoKQogewotICAgIGlmIChtX2xpc3RCb3gpCisgICAgaWYgKG1fbGlz
dEJveCAmJiBtX3Nob3VsZE1hbmFnZUxpc3QpCiAgICAgICAgIHJlbW92ZUNoaWxkKG1fbGlzdEJv
eC5nZXQoKSk7CiB9CiAKQEAgLTM1Nyw2ICszMzksMTkgQEAgdm9pZCBQb3B1cENvbnRhaW5lcjo6
c2hvd1BvcHVwKEZyYW1lVmlldwogICAgIGludmFsaWRhdGUoKTsKIH0KIAordm9pZCBQb3B1cENv
bnRhaW5lcjo6c2hvd1NlbGVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBGcmFtZVZpZXcqIHYsIGlu
dCBpbmRleCkKK3sKKyAgICAgaWYgKCFsaXN0Qm94KCkpCisgICAgICAgIHJldHVybjsKKyAgICAg
CisgICAgIGxpc3RCb3goKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICAgCisgICAgIC8vIEdl
dCB0aGUgQ2hyb21lQ2xpZW50IGFuZCBwYXNzIGl0IHRoZSBwb3B1cCBtZW51J3MgbGlzdGJveCBk
YXRhLgorICAgICBDaHJvbWVDbGllbnRDaHJvbWl1bSogY2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2hy
b21lQ2xpZW50Q2hyb21pdW0qPih2LT5mcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQo
KSk7CisgICAgIGNsaWVudC0+cG9wdXBPcGVuZWRXaXRoSXRlbXModGhpcywgcmVjdCwgdHJ1ZSwg
bGlzdEJveCgpLT5nZXRSb3dIZWlnaHQoMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGlzdEJveCgpLT5zZWxlY3RlZEluZGV4KCksIGxpc3RCb3goKS0+aXRlbXMoKSk7Cit9
CisgIAogdm9pZCBQb3B1cENvbnRhaW5lcjo6aGlkZVBvcHVwKCkKIHsKICAgICBpZiAoY2xpZW50
KCkpCkBAIC05MTYsNyArOTExLDcgQEAgdm9pZCBQb3B1cExpc3RCb3g6OnNjcm9sbFRvUmV2ZWFs
Um93KGludAogCiBib29sIFBvcHVwTGlzdEJveDo6aXNTZWxlY3RhYmxlSXRlbShpbnQgaW5kZXgp
CiB7Ci0gICAgcmV0dXJuIG1faXRlbXNbaW5kZXhdLT50eXBlID09IFR5cGVPcHRpb24gJiYgbV9w
b3B1cENsaWVudC0+aXRlbUlzRW5hYmxlZChpbmRleCk7CisgICAgcmV0dXJuIG1faXRlbXNbaW5k
ZXhdLT50eXBlID09IFBvcHVwTGlzdERhdGE6OlR5cGVPcHRpb24gJiYgbV9wb3B1cENsaWVudC0+
aXRlbUlzRW5hYmxlZChpbmRleCk7CiB9CiAKIHZvaWQgUG9wdXBMaXN0Qm94OjpjbGVhclNlbGVj
dGlvbigpCkBAIC0xMDA1LDE0ICsxMDAwLDE1IEBAIHZvaWQgUG9wdXBMaXN0Qm94Ojp1cGRhdGVG
cm9tRWxlbWVudCgpCiAKICAgICBpbnQgc2l6ZSA9IG1fcG9wdXBDbGllbnQtPmxpc3RTaXplKCk7
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgTGlzdEl0ZW1U
eXBlIHR5cGU7CisgICAgICAgIFBvcHVwTGlzdERhdGE6OlR5cGUgdHlwZTsKICAgICAgICAgaWYg
KG1fcG9wdXBDbGllbnQtPml0ZW1Jc1NlcGFyYXRvcihpKSkKLSAgICAgICAgICAgIHR5cGUgPSBQ
b3B1cExpc3RCb3g6OlR5cGVTZXBhcmF0b3I7CisgICAgICAgICAgICB0eXBlID0gUG9wdXBMaXN0
RGF0YTo6VHlwZVNlcGFyYXRvcjsKICAgICAgICAgZWxzZSBpZiAobV9wb3B1cENsaWVudC0+aXRl
bUlzTGFiZWwoaSkpCi0gICAgICAgICAgICB0eXBlID0gUG9wdXBMaXN0Qm94OjpUeXBlR3JvdXA7
CisgICAgICAgICAgICB0eXBlID0gUG9wdXBMaXN0RGF0YTo6VHlwZUdyb3VwOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICB0eXBlID0gUG9wdXBMaXN0Qm94OjpUeXBlT3B0aW9uOwotICAgICAg
ICBtX2l0ZW1zLmFwcGVuZChuZXcgTGlzdEl0ZW0obV9wb3B1cENsaWVudC0+aXRlbVRleHQoaSks
IHR5cGUpKTsKKyAgICAgICAgICAgIHR5cGUgPSBQb3B1cExpc3REYXRhOjpUeXBlT3B0aW9uOwor
ICAgICAgICBtX2l0ZW1zLmFwcGVuZChuZXcgUG9wdXBMaXN0RGF0YShtX3BvcHVwQ2xpZW50LT5p
dGVtVGV4dChpKSwgdHlwZSkpOworICAgICAgICBtX2l0ZW1zW2ldLT5lbmFibGVkID0gaXNTZWxl
Y3RhYmxlSXRlbShpKTsKICAgICB9CiAKICAgICBtX3NlbGVjdGVkSW5kZXggPSBtX3BvcHVwQ2xp
ZW50LT5zZWxlY3RlZEluZGV4KCk7CkBAIC0xMDgzLDcgKzEwNzksNyBAQCB2b2lkIFBvcHVwTGlz
dEJveDo6bGF5b3V0KCkKIAogdm9pZCBQb3B1cExpc3RCb3g6OmNsZWFyKCkKIHsKLSAgICBmb3Ig
KFZlY3RvcjxMaXN0SXRlbSo+OjppdGVyYXRvciBpdCA9IG1faXRlbXMuYmVnaW4oKTsgaXQgIT0g
bV9pdGVtcy5lbmQoKTsgKytpdCkKKyAgICBmb3IgKFZlY3RvcjxQb3B1cExpc3REYXRhKj46Oml0
ZXJhdG9yIGl0ID0gbV9pdGVtcy5iZWdpbigpOyBpdCAhPSBtX2l0ZW1zLmVuZCgpOyArK2l0KQog
ICAgICAgICBkZWxldGUgKml0OwogICAgIG1faXRlbXMuY2xlYXIoKTsKIH0KQEAgLTExMTAsMTMg
KzExMDYsNiBAQCBQb3B1cE1lbnU6On5Qb3B1cE1lbnUoKQogICAgIGhpZGUoKTsKIH0KIAotdm9p
ZCBQb3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2LCBpbnQgaW5k
ZXgpIAotewotICAgIGlmICghcC5wb3B1cCkKLSAgICAgICAgcC5wb3B1cCA9IFBvcHVwQ29udGFp
bmVyOjpjcmVhdGUoY2xpZW50KCksIGRyb3BEb3duU2V0dGluZ3MpOwotICAgIHAucG9wdXAtPnNo
b3cociwgdiwgaW5kZXgpOwotfQotCiB2b2lkIFBvcHVwTWVudTo6aGlkZSgpCiB7CiAgICAgaWYg
KHAucG9wdXApCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9t
aXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVD
aHJvbWl1bS5oCShyZXZpc2lvbiA0MTgxOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBNZW51Q2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsMjMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZyYW1lVmlldzsKICAgICBjbGFzcyBQb3B1cExp
c3RCb3g7CiAKKyAgICAvLyBBIGNvbnRhaW5lciBmb3IgdGhlIGRhdGEgZm9yIGVhY2ggbWVudSBp
dGVtIChyZXByZXNlbnRlZCBieSA8b3B0aW9uPiBvcgorICAgIC8vIDxvcHRncm91cD4gaW4gYSA8
c2VsZWN0PiB3aWRnZXQpIGFuZCBpcyB1c2VkIGJ5IFBvcHVwTGlzdEJveC4KKyAgICB0eXBlZGVm
IHN0cnVjdCBQb3B1cExpc3REYXRhIHsKKyAgICAgICAgZW51bSBUeXBlIHsKKyAgICAgICAgICAg
IFR5cGVPcHRpb24gPSAwLAorICAgICAgICAgICAgVHlwZUdyb3VwLAorICAgICAgICAgICAgVHlw
ZVNlcGFyYXRvcgorICAgICAgICB9OworCisgICAgICAgIFBvcHVwTGlzdERhdGEoY29uc3QgU3Ry
aW5nJiBsYWJlbCwgVHlwZSB0eXBlKQorICAgICAgICAgICAgOiBsYWJlbChsYWJlbC5jb3B5KCkp
LCB0eXBlKHR5cGUpLCB5KDApIHt9CisgICAgICAgIFN0cmluZyBsYWJlbDsKKyAgICAgICAgVHlw
ZSB0eXBlOworICAgICAgICBpbnQgeTsgIC8vIHkgb2Zmc2V0IG9mIHRoaXMgaXRlbSwgcmVsYXRp
dmUgdG8gdGhlIHRvcCBvZiB0aGUgcG9wdXAuCisgICAgICAgIGJvb2wgZW5hYmxlZDsKKyAgICB9
IFBvcHVwTGlzdERhdGE7CisKICAgICAvLyBGSVhNRTogT3VyIEZyYW1lbGVzc1Njcm9sbFZpZXcg
Y2xhc3NlcyBzaG91bGQgcHJvYmFibHkgaW1wbGVtZW50IEhvc3RXaW5kb3chCiAKICAgICAvLyBU
aGUgUG9wdXBDb250YWluZXIgY2xhc3MgaG9sZHMgYSBQb3B1cExpc3RCb3ggKHNlZSBjcHAgZmls
ZSkuICBJdHMgc29sZSBwdXJwb3NlIGlzIHRvIGJlCkBAIC03MiwxMCArODksMjAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGxvb3BTZWxlY3Rpb25OYXZpZ2F0aW9uOwogICAg
IH07CiAKKyAgICAvLyBUaGUgc2V0dGluZ3MgdXNlZCBmb3IgdGhlIGRyb3AgZG93biBtZW51Lgor
ICAgIC8vIFRoaXMgaXMgdGhlIGRlbGVnYXRlIHVzZWQgaWYgbm9uZSBpcyBwcm92aWRlZC4KKyAg
ICBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzIGRyb3BEb3duU2V0dGluZ3MgPSB7CisgICAg
ICAgIHRydWUsIC8vIGZvY3VzT25TaG93CisgICAgICAgIHRydWUsIC8vIHNldFRleHRPbkluZGV4
Q2hhbmdlCisgICAgICAgIHRydWUsIC8vIGFjY2VwdE9uQWJhbmRvbgorICAgICAgICBmYWxzZSAv
LyBsb29wU2VsZWN0aW9uTmF2aWdhdGlvbgorICAgIH07CisKICAgICBjbGFzcyBQb3B1cENvbnRh
aW5lciA6IHB1YmxpYyBGcmFtZWxlc3NTY3JvbGxWaWV3LCBwdWJsaWMgUmVmQ291bnRlZDxQb3B1
cENvbnRhaW5lcj4gIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBv
cHVwQ29udGFpbmVyPiBjcmVhdGUoUG9wdXBNZW51Q2xpZW50KiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb3B1cENvbnRhaW5lclNldHRp
bmdzJik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCk7CiAKICAgICAgICAgLy8gV2hldGhlciBhIGtl
eSBldmVudCBzaG91bGQgYmUgc2VudCB0byB0aGlzIHBvcHVwLgogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNJbnRlcmVzdGVkSW5FdmVudEZvcktleShpbnQga2V5Q29kZSk7CkBAIC05OSw2ICsxMjYs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIHNvIFdlYlZpZXdJbXBsIGNhbiBj
cmVhdGUgYSBQb3B1cENvbnRhaW5lci4KICAgICAgICAgdm9pZCBzaG93KGNvbnN0IEludFJlY3Qm
LCBGcmFtZVZpZXcqLCBpbnQgaW5kZXgpOwogCisgICAgICAgIC8vIFVzZWQgb24gTWFjIENocm9t
aXVtIGZvciBIVE1MIFNlbGVjdCBtZW51cy4KKyAgICAgICAgdm9pZCBzaG93U2VsZWN0KGNvbnN0
IEludFJlY3QmLCBGcmFtZVZpZXcqLCBpbnQgaW5kZXgpOworCiAgICAgICAgIC8vIEhpZGUgdGhl
IHBvcHVwLiAgRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseTogdXNlIGNsaWVudC0+aGlkZVBvcHVw
KCkuCiAgICAgICAgIHZvaWQgaGlkZVBvcHVwKCk7CiAKQEAgLTExMyw3ICsxNDMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFdURjo6
UmVmQ291bnRlZDxQb3B1cENvbnRhaW5lcj47CiAKLSAgICAgICAgUG9wdXBDb250YWluZXIoUG9w
dXBNZW51Q2xpZW50KiwgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyYpOworICAgICAgICBQ
b3B1cENvbnRhaW5lcihQb3B1cE1lbnVDbGllbnQqLCBjb25zdCBQb3B1cENvbnRhaW5lclNldHRp
bmdzJiwgYm9vbCk7CiAgICAgICAgIH5Qb3B1cENvbnRhaW5lcigpOwogCiAgICAgICAgIC8vIFBh
aW50IHRoZSBib3JkZXIuCkBAIC0xMjIsNiArMTUyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBSZWZQdHI8UG9wdXBMaXN0Qm94PiBtX2xpc3RCb3g7CiAKICAgICAgICAgUG9wdXBD
b250YWluZXJTZXR0aW5ncyBtX3NldHRpbmdzOworCisgICAgICAgIC8vIENvbnRyb2xzIGlmIHdl
IG5lZWQgdG8gYWQgb3VyIFBvcHVwTGlzdEJveCBhcyBhIGNoaWxkIHNjcm9sbCB2aWV3LgorICAg
ICAgICBib29sIG1fc2hvdWxkTWFuYWdlTGlzdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVt
TGludXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW1MaW51eC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BvcHVwTWVudUNocm9taXVtTGludXguY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDgwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQb3B1cE1lbnVD
aHJvbWl1bS5oIgorCisjaW5jbHVkZSAiQ2hhcmFjdGVyTmFtZXMuaCIKKyNpbmNsdWRlICJDaHJv
bWVDbGllbnRDaHJvbWl1bS5oIgorI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJGb250U2Vs
ZWN0b3IuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lbGVzc1Njcm9sbFZpZXcuaCIKKyNpbmNsdWRlICJGcmFtZWxlc3NTY3JvbGxW
aWV3Q2xpZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW50
UmVjdC5oIgorI2luY2x1ZGUgIktleWJvYXJkQ29kZXMuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Nb3Vz
ZUV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJQb3B1cE1lbnUuaCIKKyNpbmNsdWRlICJSZW5kZXJU
aGVtZS5oIgorI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCisjaW5jbHVkZSAiU3lzdGVtVGlt
ZS5oIgorCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBX
VEY7Cit1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKKwordXNpbmcgc3RkOjptaW47Cit1c2luZyBz
dGQ6Om1heDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CisvLyBQb3B1cE1lbnUgaW1wbGVtZW50YXRpb24KKy8vIAorLy8gTm90ZTogeW91IGNhbm5vdCBh
ZGQgbWV0aG9kcyB0byB0aGlzIGNsYXNzLCBzaW5jZSBpdCBpcyBkZWZpbmVkIGFib3ZlIHRoZSAK
Ky8vICAgICAgIHBvcnRhYmlsaXR5IGxheWVyLiBUbyBhY2Nlc3MgbWV0aG9kcyBhbmQgcHJvcGVy
dGllcyBvbiB0aGUKKy8vICAgICAgIHBvcHVwIHdpZGdldHMsIHVzZSB8cG9wdXBXaW5kb3d8IGFi
b3ZlLiAKKwordm9pZCBQb3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3
KiB2LCBpbnQgaW5kZXgpIAoreworICAgIGlmICghcC5wb3B1cCkKKyAgICAgICAgcC5wb3B1cCA9
IFBvcHVwQ29udGFpbmVyOjpjcmVhdGUoY2xpZW50KCksIGRyb3BEb3duU2V0dGluZ3MsIHRydWUp
OworICAgIHAucG9wdXAtPnNob3cociwgdiwgaW5kZXgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21p
dW1NYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW1NYWMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9Qb3B1cE1lbnVDaHJvbWl1bU1hYy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBvcHVwTWVudUNocm9t
aXVtLmgiCisKKyNpbmNsdWRlICJDaGFyYWN0ZXJOYW1lcy5oIgorI2luY2x1ZGUgIkNocm9tZUNs
aWVudENocm9taXVtLmgiCisjaW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkZvbnRTZWxlY3Rv
ci5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiRnJhbWVsZXNzU2Nyb2xsVmlldy5oIgorI2luY2x1ZGUgIkZyYW1lbGVzc1Njcm9sbFZpZXdD
bGllbnQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbnRSZWN0
LmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRDb2Rlcy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZl
bnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2hl
ZWxFdmVudC5oIgorI2luY2x1ZGUgIlBvcHVwTWVudS5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1l
LmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKKyNpbmNsdWRlICJTeXN0ZW1UaW1lLmgi
CisKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdURjsK
K3VzaW5nIG5hbWVzcGFjZSBVbmljb2RlOworCit1c2luZyBzdGQ6Om1pbjsKK3VzaW5nIHN0ZDo6
bWF4OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8v
IFBvcHVwTWVudSBNYWMgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24KKy8vIAorLy8gTm90ZTogeW91
IGNhbm5vdCBhZGQgbWV0aG9kcyB0byB0aGlzIGNsYXNzLCBzaW5jZSBpdCBpcyBkZWZpbmVkIGFi
b3ZlIHRoZSAKKy8vICAgICAgIHBvcnRhYmlsaXR5IGxheWVyLiBUbyBhY2Nlc3MgbWV0aG9kcyBh
bmQgcHJvcGVydGllcyBvbiB0aGUKKy8vICAgICAgIHBvcHVwIHdpZGdldHMsIHVzZSB8cG9wdXBX
aW5kb3d8IGFib3ZlLiAKKwordm9pZCBQb3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgciwg
RnJhbWVWaWV3KiB2LCBpbnQgaW5kZXgpIAoreworICAgIGlmICghcC5wb3B1cCkKKyAgICAgICAg
cC5wb3B1cCA9IFBvcHVwQ29udGFpbmVyOjpjcmVhdGUoY2xpZW50KCksIGRyb3BEb3duU2V0dGlu
Z3MsIGZhbHNlKTsKKyAgICBwLnBvcHVwLT5zaG93U2VsZWN0KHIsIHYsIGluZGV4KTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cE1lbnVDaHJvbWl1bVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bVdpbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtV2luLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAwOSwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UG9wdXBNZW51Q2hyb21pdW0uaCIKKworI2luY2x1ZGUgIkNoYXJhY3Rlck5hbWVzLmgiCisjaW5j
bHVkZSAiQ2hyb21lQ2xpZW50Q2hyb21pdW0uaCIKKyNpbmNsdWRlICJGb250LmgiCisjaW5jbHVk
ZSAiRm9udFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJGcmFtZWxlc3NTY3JvbGxWaWV3LmgiCisjaW5jbHVkZSAiRnJhbWVs
ZXNzU2Nyb2xsVmlld0NsaWVudC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJLZXlib2FyZENvZGVzLmgiCisjaW5jbHVkZSAi
UGFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiUG9wdXBNZW51LmgiCisjaW5jbHVk
ZSAiUmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgorI2luY2x1ZGUg
IlN5c3RlbVRpbWUuaCIKKworI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorCit1c2luZyBu
YW1lc3BhY2UgV1RGOwordXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CisKK3VzaW5nIHN0ZDo6bWlu
OwordXNpbmcgc3RkOjptYXg7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLworLy8gUG9wdXBNZW51IGltcGxlbWVudGF0aW9uCisvLyAKKy8vIE5vdGU6IHlv
dSBjYW5ub3QgYWRkIG1ldGhvZHMgdG8gdGhpcyBjbGFzcywgc2luY2UgaXQgaXMgZGVmaW5lZCBh
Ym92ZSB0aGUgCisvLyAgICAgICBwb3J0YWJpbGl0eSBsYXllci4gVG8gYWNjZXNzIG1ldGhvZHMg
YW5kIHByb3BlcnRpZXMgb24gdGhlCisvLyAgICAgICBwb3B1cCB3aWRnZXRzLCB1c2UgfHBvcHVw
V2luZG93fCBhYm92ZS4gCisKK3ZvaWQgUG9wdXBNZW51OjpzaG93KGNvbnN0IEludFJlY3QmIHIs
IEZyYW1lVmlldyogdiwgaW50IGluZGV4KSAKK3sKKyAgICBpZiAoIXAucG9wdXApCisgICAgICAg
IHAucG9wdXAgPSBQb3B1cENvbnRhaW5lcjo6Y3JlYXRlKGNsaWVudCgpLCBkcm9wRG93blNldHRp
bmdzLCB0cnVlKTsKKyAgICBwLnBvcHVwLT5zaG93KHIsIHYsIGluZGV4KTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28757</attachid>
            <date>2009-03-19 12:29:04 -0700</date>
            <delta_ts>2009-03-23 17:27:47 -0700</delta_ts>
            <desc>Updated patch to allow platform specific handling of Chromium HTML select popups</desc>
            <filename>mac_cr_popups2</filename>
            <type>text/plain</type>
            <size>20900</size>
            <attacher name="Paul Godavari">paul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTgzOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDktMDMtMTkgIFBhdWwgR29kYXZhcmkgIDxwYXVsQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2OTIKKyAgICAgICAgU3Bs
aXQgUG9wdXBNZW51Q2hyb21pdW0gaW50byBXaW5kb3dzLCBNYWMgYW5kIExpbnV4IHZhcmlhbnRz
LgorICAgICAgICBUaGUgcGxhdGZvcm0gc3BlY2lmaWMgY2hhbmdlcyBvbmx5IGFwcGx5IHRvIHRo
ZSBzaG93IC8gc2hvd1NlbGVjdAorICAgICAgICBtZXRob2QgaW4gUG9wdXBNZW51LCB3aGljaCBh
bGxvd3MgdXMgdG8gaGF2ZSBkaWZmZXJlbnQgYmVoYXZpb3IKKyAgICAgICAgZm9yIGRpZmZlcmVu
dCBwbGF0Zm9ybXMgKHRoZSBjdXJyZW50IHBsYW4gaXMgdG8gdXNlIG5hdGl2ZSBjb2NvYQorICAg
ICAgICBjb250cm9scyBmb3IgcG9wdXAgbWVudXMgb24gTWFjKS4KKworICAgICAgICBXZSBhbHNv
IHNwbGl0IG91dCB0aGUgc3RvcmFnZSBjb250YWluZXIgZm9yIHRoZSBwb3B1cCBtZW51IGl0ZW1z
CisgICAgICAgIHNvIHRoYXQgQ2hyb21lQ2xpZW50Q2hyb21pdW0gY2FuIGFjY2VzcyB0aGVtIGZv
ciBmb3J3YXJkaW5nIHRvCisgICAgICAgIHRoZSBlbWJlZGRpbmcgaG9zdCAoQ2hyb21pdW0uYXBw
IG9yIHRlc3Rfc2hlbGwpLgorCisgICAgICAgICogcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRD
aHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6aXRlbXMpOgorICAgICAgICAo
V2ViQ29yZTo6UG9wdXBDb250YWluZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1
cENvbnRhaW5lcjo6UG9wdXBDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250
YWluZXI6On5Qb3B1cENvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5l
cjo6c2hvd1NlbGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OmlzU2VsZWN0
YWJsZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94Ojp1cGRhdGVGcm9tRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OmNsZWFyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UG9wdXBMaXN0RGF0YTo6KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdERhdGE6OlBv
cHVwTGlzdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bUxpbnV4LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpQb3B1cE1lbnU6OnNob3cpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVw
TWVudUNocm9taXVtTWFjLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6
OnNob3cpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtV2lu
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnNob3cpOgorCiAyMDA5
LTAzLTE5ICBKZXJlbXkgTW9za292aWNoICA8amVyZW15QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJDb3JlL3BhZ2UvY2hyb21p
dW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvY2hy
b21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaAkocmV2aXNpb24gNDE4MTgpCisrKyBXZWJDb3Jl
L3BhZ2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZyYW1lbGVzc1Nj
cm9sbFZpZXc7CiAgICAgY2xhc3MgSW50UmVjdDsKKyAgICBzdHJ1Y3QgUG9wdXBMaXN0RGF0YTsK
IAogICAgIC8vIENvbnRhaW5zIENocm9taXVtLXNwZWNpZmljIGV4dGVuc2lvbnMgdG8gdGhlIENo
cm9tZUNsaWVudC4gIE9ubHkgcHV0CiAgICAgLy8gdGhpbmdzIGhlcmUgdGhhdCBkb24ndCBtYWtl
IHNlbnNlIGZvciBvdGhlciBwb3J0cy4KQEAgLTQ1LDYgKzQ2LDEyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgLy8gTm90aWZpZXMgdGhlIGNsaWVudCBvZiBhIG5ldyBwb3B1cCB3aWRn
ZXQuICBUaGUgY2xpZW50IHNob3VsZCBwbGFjZQogICAgICAgICAvLyBhbmQgc2l6ZSB0aGUgd2lk
Z2V0IHdpdGggdGhlIGdpdmVuIGJvdW5kcywgcmVsYXRpdmUgdG8gdGhlIHNjcmVlbi4KICAgICAg
ICAgdmlydHVhbCB2b2lkIHBvcHVwT3BlbmVkKEZyYW1lbGVzc1Njcm9sbFZpZXcqIHBvcHVwVmll
dywgY29uc3QgSW50UmVjdCYgYm91bmRzLCBib29sIGZvY3VzT25TaG93KSA9IDA7CisKKyAgICAg
ICAgLy8gU2ltaWxhciB0byBwb3B1cE9wZW5lZCBhYm92ZSwgYnV0IHVzZWQgZm9yIGNsaWVudHMg
dGhhdCB3aWxsIGRyYXcgdGhlCisgICAgICAgIC8vIHBvcHVwIG1lbnUgd2l0aCBuYXRpdmUgY29u
dHJvbHMgYW5kIHRodXMgbmVlZCBhIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgIHZpcnR1YWwg
dm9pZCBwb3B1cE9wZW5lZFdpdGhJdGVtcyhGcmFtZWxlc3NTY3JvbGxWaWV3KiBwb3B1cFZpZXcs
IGNvbnN0IEludFJlY3QmIGJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZm9jdXNPblNob3csIGludCBpdGVtSGVpZ2h0LCBpbnQgc2VsZWN0ZWRJ
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZl
Y3RvcjxQb3B1cExpc3REYXRhKj4mIG1lbnVJdGVtcykgPSAwOwogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51
Q2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9w
dXBNZW51Q2hyb21pdW0uY3BwCShyZXZpc2lvbiA0MTgxOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxNSAr
NjksNiBAQCBzdGF0aWMgY29uc3QgaW50IGtNYXhIZWlnaHQgPSA1MDA7CiBzdGF0aWMgY29uc3Qg
aW50IGtCb3JkZXJTaXplID0gMTsKIHN0YXRpYyBjb25zdCBUaW1lU3RhbXAga1R5cGVBaGVhZFRp
bWVvdXRNcyA9IDEwMDA7CiAKLS8vIFRoZSBzZXR0aW5ncyB1c2VkIGZvciB0aGUgZHJvcCBkb3du
IG1lbnUuCi0vLyBUaGlzIGlzIHRoZSBkZWxlZ2F0ZSB1c2VkIGlmIG5vbmUgaXMgcHJvdmlkZWQu
Ci1zdGF0aWMgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyBkcm9wRG93blNldHRpbmdzID0g
ewotICAgIHRydWUsIC8vIGZvY3VzT25TaG93Ci0gICAgdHJ1ZSwgLy8gc2V0VGV4dE9uSW5kZXhD
aGFuZ2UKLSAgICB0cnVlLCAvLyBhY2NlcHRPbkFiYW5kb24KLSAgICBmYWxzZSAvLyBsb29wU2Vs
ZWN0aW9uTmF2aWdhdGlvbgotfTsKLQogLy8gVGhpcyBjbGFzcyB1c2VzIFdlYkNvcmUgY29kZSB0
byBwYWludCBhbmQgaGFuZGxlIGV2ZW50cyBmb3IgYSBkcm9wLWRvd24gbGlzdAogLy8gYm94ICgi
Y29tYm9ib3giIG9uIFdpbmRvd3MpLgogY2xhc3MgUG9wdXBMaXN0Qm94IDogcHVibGljIEZyYW1l
bGVzc1Njcm9sbFZpZXcsIHB1YmxpYyBSZWZDb3VudGVkPFBvcHVwTGlzdEJveD4gewpAQCAtMTM2
LDI2ICsxMjcsMTkgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUgcG9wdXAg
d2FudHMgdG8gcHJvY2VzcyBldmVudHMgZm9yIHRoZSBwYXNzZWQga2V5LgogICAgIGJvb2wgaXNJ
bnRlcmVzdGVkSW5FdmVudEZvcktleShpbnQga2V5Q29kZSk7CiAKKyAgICAvLyBHZXRzIHRoZSBo
ZWlnaHQgb2YgYSByb3cuCisgICAgaW50IGdldFJvd0hlaWdodChpbnQgaW5kZXgpOworCisgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBzZWxlY3Rpb24gY2FuIGJlIGNoYW5nZWQgdG8gaW5kZXgu
CisgICAgLy8gRGlzYWJsZWQgaXRlbXMsIG9yIGxhYmVscyBjYW5ub3QgYmUgc2VsZWN0ZWQuCisg
ICAgYm9vbCBpc1NlbGVjdGFibGVJdGVtKGludCBpbmRleCk7CisKKyAgICBjb25zdCBWZWN0b3I8
UG9wdXBMaXN0RGF0YSo+JiBpdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1faXRlbXM7IH0KKwogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgUG9wdXBDb250YWluZXI7CiAgICAgZnJpZW5kIGNsYXNz
IFJlZkNvdW50ZWQ8UG9wdXBMaXN0Qm94PjsKIAotICAgIC8vIEEgdHlwZSBvZiBMaXN0IEl0ZW0K
LSAgICBlbnVtIExpc3RJdGVtVHlwZSB7Ci0gICAgICAgIFR5cGVPcHRpb24sCi0gICAgICAgIFR5
cGVHcm91cCwKLSAgICAgICAgVHlwZVNlcGFyYXRvcgotICAgIH07Ci0KLSAgICAvLyBBIGl0ZW0g
KHJlcHJlc2VudGVkIGJ5IDxvcHRpb24+IG9yIDxvcHRncm91cD4pIGluIHRoZSA8c2VsZWN0PiB3
aWRnZXQuIAotICAgIHN0cnVjdCBMaXN0SXRlbSB7Ci0gICAgICAgIExpc3RJdGVtKGNvbnN0IFN0
cmluZyYgbGFiZWwsIExpc3RJdGVtVHlwZSB0eXBlKQotICAgICAgICAgICAgOiBsYWJlbChsYWJl
bC5jb3B5KCkpLCB0eXBlKHR5cGUpLCB5KDApIHt9Ci0gICAgICAgIFN0cmluZyBsYWJlbDsKLSAg
ICAgICAgTGlzdEl0ZW1UeXBlIHR5cGU7Ci0gICAgICAgIGludCB5OyAgLy8geSBvZmZzZXQgb2Yg
dGhpcyBpdGVtLCByZWxhdGl2ZSB0byB0aGUgdG9wIG9mIHRoZSBwb3B1cC4KLSAgICB9OwotCiAg
ICAgUG9wdXBMaXN0Qm94KFBvcHVwTWVudUNsaWVudCogY2xpZW50LCBjb25zdCBQb3B1cENvbnRh
aW5lclNldHRpbmdzJiBzZXR0aW5ncykKICAgICAgICAgOiBtX3NldHRpbmdzKHNldHRpbmdzKQog
ICAgICAgICAsIG1fb3JpZ2luYWxJbmRleCgwKQpAQCAtMTg0LDEwICsxNjgsNiBAQCBwcml2YXRl
OgogICAgIC8vIHRoZSB3ZWIgcGFnZSwgYW5kIGNsb3NlcyB0aGUgcG9wdXAuCiAgICAgdm9pZCBh
Y2NlcHRJbmRleChpbnQgaW5kZXgpOwogCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzZWxl
Y3Rpb24gY2FuIGJlIGNoYW5nZWQgdG8gaW5kZXguCi0gICAgLy8gRGlzYWJsZWQgaXRlbXMsIG9y
IGxhYmVscyBjYW5ub3QgYmUgc2VsZWN0ZWQuCi0gICAgYm9vbCBpc1NlbGVjdGFibGVJdGVtKGlu
dCBpbmRleCk7Ci0KICAgICAvLyBDbGVhcnMgdGhlIHNlbGVjdGlvbiAoc28gbm8gcm93IGFwcGVh
cnMgc2VsZWN0ZWQpLgogICAgIHZvaWQgY2xlYXJTZWxlY3Rpb24oKTsKIApAQCAtMTk4LDggKzE3
OCw2IEBAIHByaXZhdGU6CiAgICAgLy8gSW52YWxpZGF0ZXMgdGhlIHJvdyBhdCB0aGUgZ2l2ZW4g
aW5kZXguIAogICAgIHZvaWQgaW52YWxpZGF0ZVJvdyhpbnQgaW5kZXgpOwogCi0gICAgLy8gR2V0
cyB0aGUgaGVpZ2h0IG9mIGEgcm93LgotICAgIGludCBnZXRSb3dIZWlnaHQoaW50IGluZGV4KTsK
ICAgICAvLyBHZXQgdGhlIGJvdW5kcyBvZiBhIHJvdy4gCiAgICAgSW50UmVjdCBnZXRSb3dCb3Vu
ZHMoaW50IGluZGV4KTsKIApAQCAtMjUwLDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1f
YmFzZVdpZHRoOwogCiAgICAgLy8gQSBsaXN0IG9mIHRoZSBvcHRpb25zIGNvbnRhaW5lZCB3aXRo
aW4gdGhlIDxzZWxlY3Q+Ci0gICAgVmVjdG9yPExpc3RJdGVtKj4gbV9pdGVtczsKKyAgICBWZWN0
b3I8UG9wdXBMaXN0RGF0YSo+IG1faXRlbXM7CiAKICAgICAvLyBUaGUgPHNlbGVjdD4gUG9wdXBN
ZW51Q2xpZW50IHRoYXQgb3BlbmVkIHVzLgogICAgIFBvcHVwTWVudUNsaWVudCogbV9wb3B1cENs
aWVudDsKQEAgLTMwNSwyMSArMjgzLDI1IEBAIHN0YXRpYyBQbGF0Zm9ybVdoZWVsRXZlbnQgY29u
c3RydWN0UmVsYXQKIAogLy8gc3RhdGljCiBQYXNzUmVmUHRyPFBvcHVwQ29udGFpbmVyPiBQb3B1
cENvbnRhaW5lcjo6Y3JlYXRlKFBvcHVwTWVudUNsaWVudCogY2xpZW50LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb3B1cENvbnRhaW5l
clNldHRpbmdzJiBzZXR0aW5ncykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyYgc2V0dGluZ3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2hv
dWxkTWFuYWdlTGlzdCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcHVwQ29udGFpbmVy
KGNsaWVudCwgc2V0dGluZ3MpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcHVwQ29udGFp
bmVyKGNsaWVudCwgc2V0dGluZ3MsIHNob3VsZE1hbmFnZUxpc3QpKTsKIH0KIAotUG9wdXBDb250
YWluZXI6OlBvcHVwQ29udGFpbmVyKFBvcHVwTWVudUNsaWVudCogY2xpZW50LCBjb25zdCBQb3B1
cENvbnRhaW5lclNldHRpbmdzJiBzZXR0aW5ncykKK1BvcHVwQ29udGFpbmVyOjpQb3B1cENvbnRh
aW5lcihQb3B1cE1lbnVDbGllbnQqIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzJiBzZXR0aW5ncywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIHNob3VsZE1hbmFnZUxpc3QpCiAgICAgOiBtX2xpc3RC
b3goUG9wdXBMaXN0Qm94OjpjcmVhdGUoY2xpZW50LCBzZXR0aW5ncykpCiAgICAgLCBtX3NldHRp
bmdzKHNldHRpbmdzKQorICAgICwgbV9zaG91bGRNYW5hZ2VMaXN0KHNob3VsZE1hbmFnZUxpc3Qp
CiB7CiAgICAgc2V0U2Nyb2xsYmFyTW9kZXMoU2Nyb2xsYmFyQWx3YXlzT2ZmLCBTY3JvbGxiYXJB
bHdheXNPZmYpOwogfQogCiBQb3B1cENvbnRhaW5lcjo6flBvcHVwQ29udGFpbmVyKCkKIHsKLSAg
ICBpZiAobV9saXN0Qm94KQorICAgIGlmIChtX2xpc3RCb3ggJiYgbV9zaG91bGRNYW5hZ2VMaXN0
KQogICAgICAgICByZW1vdmVDaGlsZChtX2xpc3RCb3guZ2V0KCkpOwogfQogCkBAIC0zNTcsNiAr
MzM5LDE5IEBAIHZvaWQgUG9wdXBDb250YWluZXI6OnNob3dQb3B1cChGcmFtZVZpZXcKICAgICBp
bnZhbGlkYXRlKCk7CiB9CiAKK3ZvaWQgUG9wdXBDb250YWluZXI6OnNob3dTZWxlY3QoY29uc3Qg
SW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2LCBpbnQgaW5kZXgpCit7CisgICAgIGlmICghbGlz
dEJveCgpKQorICAgICAgICByZXR1cm47CisgICAgIAorICAgICBsaXN0Qm94KCktPnVwZGF0ZUZy
b21FbGVtZW50KCk7CisgICAgIAorICAgICAvLyBHZXQgdGhlIENocm9tZUNsaWVudCBhbmQgcGFz
cyBpdCB0aGUgcG9wdXAgbWVudSdzIGxpc3Rib3ggZGF0YS4KKyAgICAgQ2hyb21lQ2xpZW50Q2hy
b21pdW0qIGNsaWVudCA9IHN0YXRpY19jYXN0PENocm9tZUNsaWVudENocm9taXVtKj4odi0+ZnJh
bWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCkpOworICAgICBjbGllbnQtPnBvcHVwT3Bl
bmVkV2l0aEl0ZW1zKHRoaXMsIHJlY3QsIHRydWUsIGxpc3RCb3goKS0+Z2V0Um93SGVpZ2h0KDAp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RCb3goKS0+c2VsZWN0ZWRJ
bmRleCgpLCBsaXN0Qm94KCktPml0ZW1zKCkpOworfQorICAKIHZvaWQgUG9wdXBDb250YWluZXI6
OmhpZGVQb3B1cCgpCiB7CiAgICAgaWYgKGNsaWVudCgpKQpAQCAtOTE2LDcgKzkxMSw3IEBAIHZv
aWQgUG9wdXBMaXN0Qm94OjpzY3JvbGxUb1JldmVhbFJvdyhpbnQKIAogYm9vbCBQb3B1cExpc3RC
b3g6OmlzU2VsZWN0YWJsZUl0ZW0oaW50IGluZGV4KQogewotICAgIHJldHVybiBtX2l0ZW1zW2lu
ZGV4XS0+dHlwZSA9PSBUeXBlT3B0aW9uICYmIG1fcG9wdXBDbGllbnQtPml0ZW1Jc0VuYWJsZWQo
aW5kZXgpOworICAgIHJldHVybiBtX2l0ZW1zW2luZGV4XS0+dHlwZSA9PSBQb3B1cExpc3REYXRh
OjpUeXBlT3B0aW9uICYmIG1fcG9wdXBDbGllbnQtPml0ZW1Jc0VuYWJsZWQoaW5kZXgpOwogfQog
CiB2b2lkIFBvcHVwTGlzdEJveDo6Y2xlYXJTZWxlY3Rpb24oKQpAQCAtMTAwNSwxNCArMTAwMCwx
NSBAQCB2b2lkIFBvcHVwTGlzdEJveDo6dXBkYXRlRnJvbUVsZW1lbnQoKQogCiAgICAgaW50IHNp
emUgPSBtX3BvcHVwQ2xpZW50LT5saXN0U2l6ZSgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7Ci0gICAgICAgIExpc3RJdGVtVHlwZSB0eXBlOworICAgICAgICBQb3B1cExp
c3REYXRhOjpUeXBlIHR5cGU7CiAgICAgICAgIGlmIChtX3BvcHVwQ2xpZW50LT5pdGVtSXNTZXBh
cmF0b3IoaSkpCi0gICAgICAgICAgICB0eXBlID0gUG9wdXBMaXN0Qm94OjpUeXBlU2VwYXJhdG9y
OworICAgICAgICAgICAgdHlwZSA9IFBvcHVwTGlzdERhdGE6OlR5cGVTZXBhcmF0b3I7CiAgICAg
ICAgIGVsc2UgaWYgKG1fcG9wdXBDbGllbnQtPml0ZW1Jc0xhYmVsKGkpKQotICAgICAgICAgICAg
dHlwZSA9IFBvcHVwTGlzdEJveDo6VHlwZUdyb3VwOworICAgICAgICAgICAgdHlwZSA9IFBvcHVw
TGlzdERhdGE6OlR5cGVHcm91cDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdHlwZSA9IFBv
cHVwTGlzdEJveDo6VHlwZU9wdGlvbjsKLSAgICAgICAgbV9pdGVtcy5hcHBlbmQobmV3IExpc3RJ
dGVtKG1fcG9wdXBDbGllbnQtPml0ZW1UZXh0KGkpLCB0eXBlKSk7CisgICAgICAgICAgICB0eXBl
ID0gUG9wdXBMaXN0RGF0YTo6VHlwZU9wdGlvbjsKKyAgICAgICAgbV9pdGVtcy5hcHBlbmQobmV3
IFBvcHVwTGlzdERhdGEobV9wb3B1cENsaWVudC0+aXRlbVRleHQoaSksIHR5cGUpKTsKKyAgICAg
ICAgbV9pdGVtc1tpXS0+ZW5hYmxlZCA9IGlzU2VsZWN0YWJsZUl0ZW0oaSk7CiAgICAgfQogCiAg
ICAgbV9zZWxlY3RlZEluZGV4ID0gbV9wb3B1cENsaWVudC0+c2VsZWN0ZWRJbmRleCgpOwpAQCAt
MTA4Myw3ICsxMDc5LDcgQEAgdm9pZCBQb3B1cExpc3RCb3g6OmxheW91dCgpCiAKIHZvaWQgUG9w
dXBMaXN0Qm94OjpjbGVhcigpCiB7Ci0gICAgZm9yIChWZWN0b3I8TGlzdEl0ZW0qPjo6aXRlcmF0
b3IgaXQgPSBtX2l0ZW1zLmJlZ2luKCk7IGl0ICE9IG1faXRlbXMuZW5kKCk7ICsraXQpCisgICAg
Zm9yIChWZWN0b3I8UG9wdXBMaXN0RGF0YSo+OjppdGVyYXRvciBpdCA9IG1faXRlbXMuYmVnaW4o
KTsgaXQgIT0gbV9pdGVtcy5lbmQoKTsgKytpdCkKICAgICAgICAgZGVsZXRlICppdDsKICAgICBt
X2l0ZW1zLmNsZWFyKCk7CiB9CkBAIC0xMTEwLDEzICsxMTA2LDYgQEAgUG9wdXBNZW51Ojp+UG9w
dXBNZW51KCkKICAgICBoaWRlKCk7CiB9CiAKLXZvaWQgUG9wdXBNZW51OjpzaG93KGNvbnN0IElu
dFJlY3QmIHIsIEZyYW1lVmlldyogdiwgaW50IGluZGV4KSAKLXsKLSAgICBpZiAoIXAucG9wdXAp
Ci0gICAgICAgIHAucG9wdXAgPSBQb3B1cENvbnRhaW5lcjo6Y3JlYXRlKGNsaWVudCgpLCBkcm9w
RG93blNldHRpbmdzKTsKLSAgICBwLnBvcHVwLT5zaG93KHIsIHYsIGluZGV4KTsKLX0KLQogdm9p
ZCBQb3B1cE1lbnU6OmhpZGUoKQogewogICAgIGlmIChwLnBvcHVwKQpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAkocmV2aXNpb24gNDE4MTgp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDYgKzQyLDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBGcmFtZVZpZXc7CiAgICAgY2xhc3MgUG9wdXBMaXN0Qm94OwogCisgICAgLy8gQSBjb250YWlu
ZXIgZm9yIHRoZSBkYXRhIGZvciBlYWNoIG1lbnUgaXRlbSAocmVwcmVzZW50ZWQgYnkgPG9wdGlv
bj4gb3IKKyAgICAvLyA8b3B0Z3JvdXA+IGluIGEgPHNlbGVjdD4gd2lkZ2V0KSBhbmQgaXMgdXNl
ZCBieSBQb3B1cExpc3RCb3guCisgICAgdHlwZWRlZiBzdHJ1Y3QgUG9wdXBMaXN0RGF0YSB7Cisg
ICAgICAgIGVudW0gVHlwZSB7CisgICAgICAgICAgICBUeXBlT3B0aW9uID0gMCwKKyAgICAgICAg
ICAgIFR5cGVHcm91cCwKKyAgICAgICAgICAgIFR5cGVTZXBhcmF0b3IKKyAgICAgICAgfTsKKwor
ICAgICAgICBQb3B1cExpc3REYXRhKGNvbnN0IFN0cmluZyYgbGFiZWwsIFR5cGUgdHlwZSkKKyAg
ICAgICAgICAgIDogbGFiZWwobGFiZWwuY29weSgpKSwgdHlwZSh0eXBlKSwgeSgwKSB7fQorICAg
ICAgICBTdHJpbmcgbGFiZWw7CisgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgaW50IHk7ICAv
LyB5IG9mZnNldCBvZiB0aGlzIGl0ZW0sIHJlbGF0aXZlIHRvIHRoZSB0b3Agb2YgdGhlIHBvcHVw
LgorICAgICAgICBib29sIGVuYWJsZWQ7CisgICAgfSBQb3B1cExpc3REYXRhOworCiAgICAgLy8g
RklYTUU6IE91ciBGcmFtZWxlc3NTY3JvbGxWaWV3IGNsYXNzZXMgc2hvdWxkIHByb2JhYmx5IGlt
cGxlbWVudCBIb3N0V2luZG93IQogCiAgICAgLy8gVGhlIFBvcHVwQ29udGFpbmVyIGNsYXNzIGhv
bGRzIGEgUG9wdXBMaXN0Qm94IChzZWUgY3BwIGZpbGUpLiAgSXRzIHNvbGUgcHVycG9zZSBpcyB0
byBiZQpAQCAtNzIsMTAgKzg5LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9v
bCBsb29wU2VsZWN0aW9uTmF2aWdhdGlvbjsKICAgICB9OwogCisgICAgLy8gVGhlIHNldHRpbmdz
IHVzZWQgZm9yIHRoZSBkcm9wIGRvd24gbWVudS4KKyAgICAvLyBUaGlzIGlzIHRoZSBkZWxlZ2F0
ZSB1c2VkIGlmIG5vbmUgaXMgcHJvdmlkZWQuCisgICAgY29uc3QgUG9wdXBDb250YWluZXJTZXR0
aW5ncyBkcm9wRG93blNldHRpbmdzID0geworICAgICAgICB0cnVlLCAvLyBmb2N1c09uU2hvdwor
ICAgICAgICB0cnVlLCAvLyBzZXRUZXh0T25JbmRleENoYW5nZQorICAgICAgICB0cnVlLCAvLyBh
Y2NlcHRPbkFiYW5kb24KKyAgICAgICAgZmFsc2UgLy8gbG9vcFNlbGVjdGlvbk5hdmlnYXRpb24K
KyAgICB9OworCiAgICAgY2xhc3MgUG9wdXBDb250YWluZXIgOiBwdWJsaWMgRnJhbWVsZXNzU2Ny
b2xsVmlldywgcHVibGljIFJlZkNvdW50ZWQ8UG9wdXBDb250YWluZXI+ICB7CiAgICAgcHVibGlj
OgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQb3B1cENvbnRhaW5lcj4gY3JlYXRlKFBvcHVw
TWVudUNsaWVudCosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyYpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGlu
Z3MmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wpOwogCiAgICAgICAgIC8vIFdoZXRoZXIgYSBrZXkgZXZlbnQgc2hvdWxkIGJlIHNlbnQgdG8g
dGhpcyBwb3B1cC4KICAgICAgICAgdmlydHVhbCBib29sIGlzSW50ZXJlc3RlZEluRXZlbnRGb3JL
ZXkoaW50IGtleUNvZGUpOwpAQCAtOTksNiArMTI2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAvLyBzbyBXZWJWaWV3SW1wbCBjYW4gY3JlYXRlIGEgUG9wdXBDb250YWluZXIuCiAg
ICAgICAgIHZvaWQgc2hvdyhjb25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3KiwgaW50IGluZGV4KTsK
IAorICAgICAgICAvLyBVc2VkIG9uIE1hYyBDaHJvbWl1bSBmb3IgSFRNTCBTZWxlY3QgbWVudXMu
CisgICAgICAgIHZvaWQgc2hvd1NlbGVjdChjb25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3KiwgaW50
IGluZGV4KTsKKwogICAgICAgICAvLyBIaWRlIHRoZSBwb3B1cC4gIERvIG5vdCBjYWxsIHRoaXMg
ZGlyZWN0bHk6IHVzZSBjbGllbnQtPmhpZGVQb3B1cCgpLgogICAgICAgICB2b2lkIGhpZGVQb3B1
cCgpOwogCkBAIC0xMTMsNyArMTQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZh
dGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8UG9wdXBDb250YWluZXI+
OwogCi0gICAgICAgIFBvcHVwQ29udGFpbmVyKFBvcHVwTWVudUNsaWVudCosIGNvbnN0IFBvcHVw
Q29udGFpbmVyU2V0dGluZ3MmKTsKKyAgICAgICAgUG9wdXBDb250YWluZXIoUG9wdXBNZW51Q2xp
ZW50KiwgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyYsIGJvb2wpOwogICAgICAgICB+UG9w
dXBDb250YWluZXIoKTsKIAogICAgICAgICAvLyBQYWludCB0aGUgYm9yZGVyLgpAQCAtMTIyLDYg
KzE1Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPFBvcHVwTGlzdEJv
eD4gbV9saXN0Qm94OwogCiAgICAgICAgIFBvcHVwQ29udGFpbmVyU2V0dGluZ3MgbV9zZXR0aW5n
czsKKworICAgICAgICAvLyBDb250cm9scyBpZiB3ZSBuZWVkIHRvIGFkIG91ciBQb3B1cExpc3RC
b3ggYXMgYSBjaGlsZCBzY3JvbGwgdmlldy4KKyAgICAgICAgYm9vbCBtX3Nob3VsZE1hbmFnZUxp
c3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bUxpbnV4LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtTGludXguY3BwCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bUxp
bnV4LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAwOCwgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUG9wdXBNZW51Q2hyb21pdW0uaCIKKworI2luY2x1ZGUgIkNo
cm9tZUNsaWVudENocm9taXVtLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
RnJhbWVsZXNzU2Nyb2xsVmlldy5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJQ
b3B1cE1lbnUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBQb3B1cE1lbnUgaW1wbGVtZW50YXRpb24K
Ky8vIAorLy8gTm90ZTogeW91IGNhbm5vdCBhZGQgbWV0aG9kcyB0byB0aGlzIGNsYXNzLCBzaW5j
ZSBpdCBpcyBkZWZpbmVkIGFib3ZlIHRoZSAKKy8vICAgICAgIHBvcnRhYmlsaXR5IGxheWVyLiBU
byBhY2Nlc3MgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBvbiB0aGUKKy8vICAgICAgIHBvcHVwIHdp
ZGdldHMsIHVzZSB8cG9wdXBXaW5kb3d8IGFib3ZlLiAKKwordm9pZCBQb3B1cE1lbnU6OnNob3co
Y29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2LCBpbnQgaW5kZXgpIAoreworICAgIGlmICgh
cC5wb3B1cCkKKyAgICAgICAgcC5wb3B1cCA9IFBvcHVwQ29udGFpbmVyOjpjcmVhdGUoY2xpZW50
KCksIGRyb3BEb3duU2V0dGluZ3MsIHRydWUpOworICAgIHAucG9wdXAtPnNob3cociwgdiwgaW5k
ZXgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW1NYWMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW1NYWMuY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bU1hYy5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgs
IDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlBvcHVwTWVudUNocm9taXVtLmgiCisKKyNpbmNsdWRlICJDaHJvbWVDbGll
bnRDaHJvbWl1bS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkZyYW1lbGVz
c1Njcm9sbFZpZXcuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUG9wdXBNZW51
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLworLy8gUG9wdXBNZW51IE1hYyBzcGVjaWZpYyBpbXBsZW1lbnRh
dGlvbgorLy8gCisvLyBOb3RlOiB5b3UgY2Fubm90IGFkZCBtZXRob2RzIHRvIHRoaXMgY2xhc3Ms
IHNpbmNlIGl0IGlzIGRlZmluZWQgYWJvdmUgdGhlIAorLy8gICAgICAgcG9ydGFiaWxpdHkgbGF5
ZXIuIFRvIGFjY2VzcyBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIG9uIHRoZQorLy8gICAgICAgcG9w
dXAgd2lkZ2V0cywgdXNlIHxwb3B1cFdpbmRvd3wgYWJvdmUuIAorCit2b2lkIFBvcHVwTWVudTo6
c2hvdyhjb25zdCBJbnRSZWN0JiByLCBGcmFtZVZpZXcqIHYsIGludCBpbmRleCkgCit7CisgICAg
aWYgKCFwLnBvcHVwKQorICAgICAgICBwLnBvcHVwID0gUG9wdXBDb250YWluZXI6OmNyZWF0ZShj
bGllbnQoKSwgZHJvcERvd25TZXR0aW5ncywgZmFsc2UpOworICAgIHAucG9wdXAtPnNob3dTZWxl
Y3QociwgdiwgaW5kZXgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtV2luLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtV2luLmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21p
dW1XaW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0
IChjKSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQb3B1cE1lbnVDaHJvbWl1bS5oIgorCisjaW5jbHVkZSAi
Q2hyb21lQ2xpZW50Q2hyb21pdW0uaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRl
ICJGcmFtZWxlc3NTY3JvbGxWaWV3LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUg
IlBvcHVwTWVudS5oIgorCit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIFBvcHVwTWVudSBpbXBsZW1lbnRhdGlv
bgorLy8gCisvLyBOb3RlOiB5b3UgY2Fubm90IGFkZCBtZXRob2RzIHRvIHRoaXMgY2xhc3MsIHNp
bmNlIGl0IGlzIGRlZmluZWQgYWJvdmUgdGhlIAorLy8gICAgICAgcG9ydGFiaWxpdHkgbGF5ZXIu
IFRvIGFjY2VzcyBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIG9uIHRoZQorLy8gICAgICAgcG9wdXAg
d2lkZ2V0cywgdXNlIHxwb3B1cFdpbmRvd3wgYWJvdmUuIAorCit2b2lkIFBvcHVwTWVudTo6c2hv
dyhjb25zdCBJbnRSZWN0JiByLCBGcmFtZVZpZXcqIHYsIGludCBpbmRleCkgCit7CisgICAgaWYg
KCFwLnBvcHVwKQorICAgICAgICBwLnBvcHVwID0gUG9wdXBDb250YWluZXI6OmNyZWF0ZShjbGll
bnQoKSwgZHJvcERvd25TZXR0aW5ncywgdHJ1ZSk7CisgICAgcC5wb3B1cC0+c2hvdyhyLCB2LCBp
bmRleCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwo=
</data>
<flag name="review"
          id="14183"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28880</attachid>
            <date>2009-03-23 17:27:47 -0700</date>
            <delta_ts>2009-03-30 17:04:19 -0700</delta_ts>
            <desc>Updated patch for handling select elements in the chromium port</desc>
            <filename>mac_cr_popups3</filename>
            <type>text/plain</type>
            <size>10775</size>
            <attacher name="Paul Godavari">paul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTkyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMDktMDMtMjMgIFBhdWwgR29kYXZhcmkgIDxwYXVsQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2OTIKKyAgICAgICAgU3Bs
aXQgUG9wdXBNZW51Q2hyb21pdW0gaW50byBXaW5kb3dzLCBNYWMgYW5kIExpbnV4IHZhcmlhbnRz
LgorICAgICAgICBUaGUgcGxhdGZvcm0gc3BlY2lmaWMgY2hhbmdlcyBvbmx5IGFwcGx5IHRvIHRo
ZSBzaG93IC8gc2hvd1NlbGVjdAorICAgICAgICBtZXRob2QgaW4gUG9wdXBNZW51LCB3aGljaCBh
bGxvd3MgdXMgdG8gaGF2ZSBkaWZmZXJlbnQgYmVoYXZpb3IKKyAgICAgICAgZm9yIGRpZmZlcmVu
dCBwbGF0Zm9ybXMgKHRoZSBjdXJyZW50IHBsYW4gaXMgdG8gdXNlIG5hdGl2ZSBjb2NvYQorICAg
ICAgICBjb250cm9scyBmb3IgcG9wdXAgbWVudXMgb24gTWFjKS4KKworICAgICAgICBXZSBhbHNv
IHNwbGl0IG91dCB0aGUgc3RvcmFnZSBjb250YWluZXIgZm9yIHRoZSBwb3B1cCBtZW51IGl0ZW1z
CisgICAgICAgIHNvIHRoYXQgQ2hyb21lQ2xpZW50Q2hyb21pdW0gY2FuIGFjY2VzcyB0aGVtIGZv
ciBmb3J3YXJkaW5nIHRvCisgICAgICAgIHRoZSBlbWJlZGRpbmcgaG9zdCAoQ2hyb21pdW0uYXBw
IG9yIHRlc3Rfc2hlbGwpLgorCisgICAgICAgICogcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRD
aHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6aXRlbXMpOgorICAgICAgICAo
V2ViQ29yZTo6UG9wdXBDb250YWluZXI6OlBvcHVwQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwQ29udGFpbmVyOjp+UG9wdXBDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UG9wdXBDb250YWluZXI6OnNob3dTZWxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250
YWluZXI6OnNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94Ojpp
c1NlbGVjdGFibGVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6dXBkYXRl
RnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpjbGVhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnNob3cpOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL1BvcHVwTWVudUNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RE
YXRhOjopOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0RGF0YTo6UG9wdXBMaXN0RGF0YSk6
CisKIDIwMDktMDMtMjMgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NzYyCkluZGV4OiBXZWJD
b3JlL3BhZ2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaAkocmV2aXNpb24gNDE4
MTgpCisrKyBXZWJDb3JlL3BhZ2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIEZyYW1lbGVzc1Njcm9sbFZpZXc7CiAgICAgY2xhc3MgSW50UmVjdDsKKyAgICBzdHJ1Y3Qg
UG9wdXBMaXN0RGF0YTsKIAogICAgIC8vIENvbnRhaW5zIENocm9taXVtLXNwZWNpZmljIGV4dGVu
c2lvbnMgdG8gdGhlIENocm9tZUNsaWVudC4gIE9ubHkgcHV0CiAgICAgLy8gdGhpbmdzIGhlcmUg
dGhhdCBkb24ndCBtYWtlIHNlbnNlIGZvciBvdGhlciBwb3J0cy4KQEAgLTQ1LDYgKzQ2LDEyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gTm90aWZpZXMgdGhlIGNsaWVudCBvZiBh
IG5ldyBwb3B1cCB3aWRnZXQuICBUaGUgY2xpZW50IHNob3VsZCBwbGFjZQogICAgICAgICAvLyBh
bmQgc2l6ZSB0aGUgd2lkZ2V0IHdpdGggdGhlIGdpdmVuIGJvdW5kcywgcmVsYXRpdmUgdG8gdGhl
IHNjcmVlbi4KICAgICAgICAgdmlydHVhbCB2b2lkIHBvcHVwT3BlbmVkKEZyYW1lbGVzc1Njcm9s
bFZpZXcqIHBvcHVwVmlldywgY29uc3QgSW50UmVjdCYgYm91bmRzLCBib29sIGZvY3VzT25TaG93
KSA9IDA7CisKKyAgICAgICAgLy8gU2ltaWxhciB0byBwb3B1cE9wZW5lZCBhYm92ZSwgYnV0IHVz
ZWQgZm9yIGNsaWVudHMgdGhhdCB3aWxsIGRyYXcgdGhlCisgICAgICAgIC8vIHBvcHVwIG1lbnUg
d2l0aCBuYXRpdmUgY29udHJvbHMgYW5kIHRodXMgbmVlZCBhIG1vcmUgaW5mb3JtYXRpb24uCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBwb3B1cE9wZW5lZFdpdGhJdGVtcyhGcmFtZWxlc3NTY3JvbGxW
aWV3KiBwb3B1cFZpZXcsIGNvbnN0IEludFJlY3QmIGJvdW5kcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZm9jdXNPblNob3csIGludCBpdGVtSGVpZ2h0
LCBpbnQgc2VsZWN0ZWRJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFZlY3RvcjxQb3B1cExpc3REYXRhKj4mIG1lbnVJdGVtcykgPSAwOwogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCShyZXZpc2lvbiA0MTgxOCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzYsMjYgKzEzNiwxOSBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB3aGV0aGVy
IHRoZSBwb3B1cCB3YW50cyB0byBwcm9jZXNzIGV2ZW50cyBmb3IgdGhlIHBhc3NlZCBrZXkuCiAg
ICAgYm9vbCBpc0ludGVyZXN0ZWRJbkV2ZW50Rm9yS2V5KGludCBrZXlDb2RlKTsKIAorICAgIC8v
IEdldHMgdGhlIGhlaWdodCBvZiBhIHJvdy4KKyAgICBpbnQgZ2V0Um93SGVpZ2h0KGludCBpbmRl
eCk7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHNlbGVjdGlvbiBjYW4gYmUgY2hhbmdl
ZCB0byBpbmRleC4KKyAgICAvLyBEaXNhYmxlZCBpdGVtcywgb3IgbGFiZWxzIGNhbm5vdCBiZSBz
ZWxlY3RlZC4KKyAgICBib29sIGlzU2VsZWN0YWJsZUl0ZW0oaW50IGluZGV4KTsKKworICAgIGNv
bnN0IFZlY3RvcjxQb3B1cExpc3REYXRhKj4mIGl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9pdGVt
czsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQb3B1cENvbnRhaW5lcjsKICAgICBm
cmllbmQgY2xhc3MgUmVmQ291bnRlZDxQb3B1cExpc3RCb3g+OwogCi0gICAgLy8gQSB0eXBlIG9m
IExpc3QgSXRlbQotICAgIGVudW0gTGlzdEl0ZW1UeXBlIHsKLSAgICAgICAgVHlwZU9wdGlvbiwK
LSAgICAgICAgVHlwZUdyb3VwLAotICAgICAgICBUeXBlU2VwYXJhdG9yCi0gICAgfTsKLQotICAg
IC8vIEEgaXRlbSAocmVwcmVzZW50ZWQgYnkgPG9wdGlvbj4gb3IgPG9wdGdyb3VwPikgaW4gdGhl
IDxzZWxlY3Q+IHdpZGdldC4gCi0gICAgc3RydWN0IExpc3RJdGVtIHsKLSAgICAgICAgTGlzdEl0
ZW0oY29uc3QgU3RyaW5nJiBsYWJlbCwgTGlzdEl0ZW1UeXBlIHR5cGUpCi0gICAgICAgICAgICA6
IGxhYmVsKGxhYmVsLmNvcHkoKSksIHR5cGUodHlwZSksIHkoMCkge30KLSAgICAgICAgU3RyaW5n
IGxhYmVsOwotICAgICAgICBMaXN0SXRlbVR5cGUgdHlwZTsKLSAgICAgICAgaW50IHk7ICAvLyB5
IG9mZnNldCBvZiB0aGlzIGl0ZW0sIHJlbGF0aXZlIHRvIHRoZSB0b3Agb2YgdGhlIHBvcHVwLgot
ICAgIH07Ci0KICAgICBQb3B1cExpc3RCb3goUG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGNvbnN0
IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MmIHNldHRpbmdzKQogICAgICAgICA6IG1fc2V0dGluZ3Mo
c2V0dGluZ3MpCiAgICAgICAgICwgbV9vcmlnaW5hbEluZGV4KDApCkBAIC0xODQsMTAgKzE3Nyw2
IEBAIHByaXZhdGU6CiAgICAgLy8gdGhlIHdlYiBwYWdlLCBhbmQgY2xvc2VzIHRoZSBwb3B1cC4K
ICAgICB2b2lkIGFjY2VwdEluZGV4KGludCBpbmRleCk7CiAKLSAgICAvLyBSZXR1cm5zIHRydWUg
aWYgdGhlIHNlbGVjdGlvbiBjYW4gYmUgY2hhbmdlZCB0byBpbmRleC4KLSAgICAvLyBEaXNhYmxl
ZCBpdGVtcywgb3IgbGFiZWxzIGNhbm5vdCBiZSBzZWxlY3RlZC4KLSAgICBib29sIGlzU2VsZWN0
YWJsZUl0ZW0oaW50IGluZGV4KTsKLQogICAgIC8vIENsZWFycyB0aGUgc2VsZWN0aW9uIChzbyBu
byByb3cgYXBwZWFycyBzZWxlY3RlZCkuCiAgICAgdm9pZCBjbGVhclNlbGVjdGlvbigpOwogCkBA
IC0xOTgsOCArMTg3LDYgQEAgcHJpdmF0ZToKICAgICAvLyBJbnZhbGlkYXRlcyB0aGUgcm93IGF0
IHRoZSBnaXZlbiBpbmRleC4gCiAgICAgdm9pZCBpbnZhbGlkYXRlUm93KGludCBpbmRleCk7CiAK
LSAgICAvLyBHZXRzIHRoZSBoZWlnaHQgb2YgYSByb3cuCi0gICAgaW50IGdldFJvd0hlaWdodChp
bnQgaW5kZXgpOwogICAgIC8vIEdldCB0aGUgYm91bmRzIG9mIGEgcm93LiAKICAgICBJbnRSZWN0
IGdldFJvd0JvdW5kcyhpbnQgaW5kZXgpOwogCkBAIC0yNTAsNyArMjM3LDcgQEAgcHJpdmF0ZToK
ICAgICBpbnQgbV9iYXNlV2lkdGg7CiAKICAgICAvLyBBIGxpc3Qgb2YgdGhlIG9wdGlvbnMgY29u
dGFpbmVkIHdpdGhpbiB0aGUgPHNlbGVjdD4KLSAgICBWZWN0b3I8TGlzdEl0ZW0qPiBtX2l0ZW1z
OworICAgIFZlY3RvcjxQb3B1cExpc3REYXRhKj4gbV9pdGVtczsKIAogICAgIC8vIFRoZSA8c2Vs
ZWN0PiBQb3B1cE1lbnVDbGllbnQgdGhhdCBvcGVuZWQgdXMuCiAgICAgUG9wdXBNZW51Q2xpZW50
KiBtX3BvcHVwQ2xpZW50OwpAQCAtMzEwLDcgKzI5Nyw4IEBAIFBhc3NSZWZQdHI8UG9wdXBDb250
YWluZXI+IFBvcHVwQ29udGFpbmUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcHVwQ29udGFp
bmVyKGNsaWVudCwgc2V0dGluZ3MpKTsKIH0KIAotUG9wdXBDb250YWluZXI6OlBvcHVwQ29udGFp
bmVyKFBvcHVwTWVudUNsaWVudCogY2xpZW50LCBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdz
JiBzZXR0aW5ncykKK1BvcHVwQ29udGFpbmVyOjpQb3B1cENvbnRhaW5lcihQb3B1cE1lbnVDbGll
bnQqIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb3B1cENv
bnRhaW5lclNldHRpbmdzJiBzZXR0aW5ncykKICAgICA6IG1fbGlzdEJveChQb3B1cExpc3RCb3g6
OmNyZWF0ZShjbGllbnQsIHNldHRpbmdzKSkKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCiB7
CkBAIC0zMTksOCArMzA3LDEwIEBAIFBvcHVwQ29udGFpbmVyOjpQb3B1cENvbnRhaW5lcihQb3B1
cE1lbnUKIAogUG9wdXBDb250YWluZXI6On5Qb3B1cENvbnRhaW5lcigpCiB7CisjaWYgIVBMQVRG
T1JNKERBUldJTikKICAgICBpZiAobV9saXN0Qm94KQogICAgICAgICByZW1vdmVDaGlsZChtX2xp
c3RCb3guZ2V0KCkpOworI2VuZGlmCiB9CiAKIHZvaWQgUG9wdXBDb250YWluZXI6OnNob3dQb3B1
cChGcmFtZVZpZXcqIHZpZXcpCkBAIC0zNTcsNiArMzQ3LDE5IEBAIHZvaWQgUG9wdXBDb250YWlu
ZXI6OnNob3dQb3B1cChGcmFtZVZpZXcKICAgICBpbnZhbGlkYXRlKCk7CiB9CiAKK3ZvaWQgUG9w
dXBDb250YWluZXI6OnNob3dTZWxlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2
LCBpbnQgaW5kZXgpCit7CisgICAgIGlmICghbGlzdEJveCgpKQorICAgICAgICByZXR1cm47Cisg
ICAgIAorICAgICBsaXN0Qm94KCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgIAorICAgICAv
LyBHZXQgdGhlIENocm9tZUNsaWVudCBhbmQgcGFzcyBpdCB0aGUgcG9wdXAgbWVudSdzIGxpc3Ri
b3ggZGF0YS4KKyAgICAgQ2hyb21lQ2xpZW50Q2hyb21pdW0qIGNsaWVudCA9IHN0YXRpY19jYXN0
PENocm9tZUNsaWVudENocm9taXVtKj4odi0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xp
ZW50KCkpOworICAgICBjbGllbnQtPnBvcHVwT3BlbmVkV2l0aEl0ZW1zKHRoaXMsIHJlY3QsIHRy
dWUsIGxpc3RCb3goKS0+Z2V0Um93SGVpZ2h0KDApLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpc3RCb3goKS0+c2VsZWN0ZWRJbmRleCgpLCBsaXN0Qm94KCktPml0ZW1zKCkp
OworfQorICAKIHZvaWQgUG9wdXBDb250YWluZXI6OmhpZGVQb3B1cCgpCiB7CiAgICAgaWYgKGNs
aWVudCgpKQpAQCAtNDgwLDYgKzQ4MywxMSBAQCB2b2lkIFBvcHVwQ29udGFpbmVyOjpyZWZyZXNo
KCkKICAgICBsYXlvdXQoKTsKIH0KIAoraW50IFBvcHVwQ29udGFpbmVyOjpzZWxlY3RlZEluZGV4
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9saXN0Qm94LT5zZWxlY3RlZEluZGV4KCk7Cit9CisK
IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vIFBvcHVwTGlzdEJveCBpbXBsZW1lbnRhdGlvbgog
CkBAIC05MTYsNyArOTI0LDcgQEAgdm9pZCBQb3B1cExpc3RCb3g6OnNjcm9sbFRvUmV2ZWFsUm93
KGludAogCiBib29sIFBvcHVwTGlzdEJveDo6aXNTZWxlY3RhYmxlSXRlbShpbnQgaW5kZXgpCiB7
Ci0gICAgcmV0dXJuIG1faXRlbXNbaW5kZXhdLT50eXBlID09IFR5cGVPcHRpb24gJiYgbV9wb3B1
cENsaWVudC0+aXRlbUlzRW5hYmxlZChpbmRleCk7CisgICAgcmV0dXJuIG1faXRlbXNbaW5kZXhd
LT50eXBlID09IFBvcHVwTGlzdERhdGE6OlR5cGVPcHRpb24gJiYgbV9wb3B1cENsaWVudC0+aXRl
bUlzRW5hYmxlZChpbmRleCk7CiB9CiAKIHZvaWQgUG9wdXBMaXN0Qm94OjpjbGVhclNlbGVjdGlv
bigpCkBAIC0xMDA1LDE0ICsxMDEzLDE1IEBAIHZvaWQgUG9wdXBMaXN0Qm94Ojp1cGRhdGVGcm9t
RWxlbWVudCgpCiAKICAgICBpbnQgc2l6ZSA9IG1fcG9wdXBDbGllbnQtPmxpc3RTaXplKCk7CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgTGlzdEl0ZW1UeXBl
IHR5cGU7CisgICAgICAgIFBvcHVwTGlzdERhdGE6OlR5cGUgdHlwZTsKICAgICAgICAgaWYgKG1f
cG9wdXBDbGllbnQtPml0ZW1Jc1NlcGFyYXRvcihpKSkKLSAgICAgICAgICAgIHR5cGUgPSBQb3B1
cExpc3RCb3g6OlR5cGVTZXBhcmF0b3I7CisgICAgICAgICAgICB0eXBlID0gUG9wdXBMaXN0RGF0
YTo6VHlwZVNlcGFyYXRvcjsKICAgICAgICAgZWxzZSBpZiAobV9wb3B1cENsaWVudC0+aXRlbUlz
TGFiZWwoaSkpCi0gICAgICAgICAgICB0eXBlID0gUG9wdXBMaXN0Qm94OjpUeXBlR3JvdXA7Cisg
ICAgICAgICAgICB0eXBlID0gUG9wdXBMaXN0RGF0YTo6VHlwZUdyb3VwOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0eXBlID0gUG9wdXBMaXN0Qm94OjpUeXBlT3B0aW9uOwotICAgICAgICBt
X2l0ZW1zLmFwcGVuZChuZXcgTGlzdEl0ZW0obV9wb3B1cENsaWVudC0+aXRlbVRleHQoaSksIHR5
cGUpKTsKKyAgICAgICAgICAgIHR5cGUgPSBQb3B1cExpc3REYXRhOjpUeXBlT3B0aW9uOworICAg
ICAgICBtX2l0ZW1zLmFwcGVuZChuZXcgUG9wdXBMaXN0RGF0YShtX3BvcHVwQ2xpZW50LT5pdGVt
VGV4dChpKSwgdHlwZSkpOworICAgICAgICBtX2l0ZW1zW2ldLT5lbmFibGVkID0gaXNTZWxlY3Rh
YmxlSXRlbShpKTsKICAgICB9CiAKICAgICBtX3NlbGVjdGVkSW5kZXggPSBtX3BvcHVwQ2xpZW50
LT5zZWxlY3RlZEluZGV4KCk7CkBAIC0xMDgzLDcgKzEwOTIsNyBAQCB2b2lkIFBvcHVwTGlzdEJv
eDo6bGF5b3V0KCkKIAogdm9pZCBQb3B1cExpc3RCb3g6OmNsZWFyKCkKIHsKLSAgICBmb3IgKFZl
Y3RvcjxMaXN0SXRlbSo+OjppdGVyYXRvciBpdCA9IG1faXRlbXMuYmVnaW4oKTsgaXQgIT0gbV9p
dGVtcy5lbmQoKTsgKytpdCkKKyAgICBmb3IgKFZlY3RvcjxQb3B1cExpc3REYXRhKj46Oml0ZXJh
dG9yIGl0ID0gbV9pdGVtcy5iZWdpbigpOyBpdCAhPSBtX2l0ZW1zLmVuZCgpOyArK2l0KQogICAg
ICAgICBkZWxldGUgKml0OwogICAgIG1faXRlbXMuY2xlYXIoKTsKIH0KQEAgLTExMTAsMTEgKzEx
MTksMTUgQEAgUG9wdXBNZW51Ojp+UG9wdXBNZW51KCkKICAgICBoaWRlKCk7CiB9CiAKLXZvaWQg
UG9wdXBNZW51OjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEZyYW1lVmlldyogdiwgaW50IGluZGV4
KSAKK3ZvaWQgUG9wdXBNZW51OjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEZyYW1lVmlldyogdiwg
aW50IGluZGV4KQogewogICAgIGlmICghcC5wb3B1cCkKICAgICAgICAgcC5wb3B1cCA9IFBvcHVw
Q29udGFpbmVyOjpjcmVhdGUoY2xpZW50KCksIGRyb3BEb3duU2V0dGluZ3MpOworI2lmIFBMQVRG
T1JNKERBUldJTikKKyAgICBwLnBvcHVwLT5zaG93U2VsZWN0KHIsIHYsIGluZGV4KTsKKyNlbHNl
CiAgICAgcC5wb3B1cC0+c2hvdyhyLCB2LCBpbmRleCk7CisjZW5kaWYKIH0KIAogdm9pZCBQb3B1
cE1lbnU6OmhpZGUoKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVD
aHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW0uaAkocmV2aXNpb24gNDE4MTgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BvcHVwTWVudUNocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDIzIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGcmFtZVZpZXc7CiAgICAgY2xhc3MgUG9w
dXBMaXN0Qm94OwogCisgICAgLy8gQSBjb250YWluZXIgZm9yIHRoZSBkYXRhIGZvciBlYWNoIG1l
bnUgaXRlbSAocmVwcmVzZW50ZWQgYnkgPG9wdGlvbj4gb3IKKyAgICAvLyA8b3B0Z3JvdXA+IGlu
IGEgPHNlbGVjdD4gd2lkZ2V0KSBhbmQgaXMgdXNlZCBieSBQb3B1cExpc3RCb3guCisgICAgdHlw
ZWRlZiBzdHJ1Y3QgUG9wdXBMaXN0RGF0YSB7CisgICAgICAgIGVudW0gVHlwZSB7CisgICAgICAg
ICAgICBUeXBlT3B0aW9uID0gMCwKKyAgICAgICAgICAgIFR5cGVHcm91cCwKKyAgICAgICAgICAg
IFR5cGVTZXBhcmF0b3IKKyAgICAgICAgfTsKKworICAgICAgICBQb3B1cExpc3REYXRhKGNvbnN0
IFN0cmluZyYgbGFiZWwsIFR5cGUgdHlwZSkKKyAgICAgICAgICAgIDogbGFiZWwobGFiZWwuY29w
eSgpKSwgdHlwZSh0eXBlKSwgeSgwKSB7fQorICAgICAgICBTdHJpbmcgbGFiZWw7CisgICAgICAg
IFR5cGUgdHlwZTsKKyAgICAgICAgaW50IHk7ICAvLyB5IG9mZnNldCBvZiB0aGlzIGl0ZW0sIHJl
bGF0aXZlIHRvIHRoZSB0b3Agb2YgdGhlIHBvcHVwLgorICAgICAgICBib29sIGVuYWJsZWQ7Cisg
ICAgfSBQb3B1cExpc3REYXRhOworCiAgICAgLy8gRklYTUU6IE91ciBGcmFtZWxlc3NTY3JvbGxW
aWV3IGNsYXNzZXMgc2hvdWxkIHByb2JhYmx5IGltcGxlbWVudCBIb3N0V2luZG93IQogCiAgICAg
Ly8gVGhlIFBvcHVwQ29udGFpbmVyIGNsYXNzIGhvbGRzIGEgUG9wdXBMaXN0Qm94IChzZWUgY3Bw
IGZpbGUpLiAgSXRzIHNvbGUgcHVycG9zZSBpcyB0byBiZQpAQCAtOTQsNiArMTExLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBTaG93IHRoZSBwb3B1cAogICAgICAgICB2b2lk
IHNob3dQb3B1cChGcmFtZVZpZXcqKTsKIAorICAgICAgICAvLyBVc2VkIG9uIE1hYyBDaHJvbWl1
bSBmb3IgSFRNTCBTZWxlY3QgbWVudXMuCisgICAgICAgIHZvaWQgc2hvd1NlbGVjdChjb25zdCBJ
bnRSZWN0JiwgRnJhbWVWaWV3KiwgaW50IGluZGV4KTsKKwogICAgICAgICAvLyBTaG93IHRoZSBw
b3B1cCBpbiB0aGUgc3BlY2lmaWVkIHJlY3QgZm9yIHRoZSBzcGVjaWZpZWQgZnJhbWUuCiAgICAg
ICAgIC8vIE5vdGU6IHRoaXMgY29kZSB3YXMgc29tZWhvdyBhcmJpdHJhcmlseSBmYWN0b3JlZC1v
dXQgb2YgdGhlIFBvcHVwIGNsYXNzCiAgICAgICAgIC8vIHNvIFdlYlZpZXdJbXBsIGNhbiBjcmVh
dGUgYSBQb3B1cENvbnRhaW5lci4KQEAgLTEwNyw2ICsxMjcsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIFBvcHVwTGlzdEJveCogbGlzdEJveCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGlzdEJveC5nZXQoKTsgfQogCisgICAgICAgIC8vIEdldHMgdGhlIGluZGV4IG9mIHRoZSBpdGVt
IHRoYXQgdGhlIHVzZXIgaXMgY3VycmVudGx5IG1vdXNlZC1vdmVyIG9yCisgICAgICAgIC8vIGhh
cyBzZWxlY3RlZCB3aXRoIHRoZSBrZXlib2FyZCB1cC9kb3duIGFycm93cy4KKyAgICAgICAgaW50
IHNlbGVjdGVkSW5kZXgoKSBjb25zdDsKKwogICAgICAgICAvLyBSZWZyZXNoIHRoZSBwb3B1cCB2
YWx1ZXMgZnJvbSB0aGUgUG9wdXBNZW51Q2xpZW50LgogICAgICAgICB2b2lkIHJlZnJlc2goKTsK
IAo=
</data>
<flag name="review"
          id="14268"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29099</attachid>
            <date>2009-03-30 17:04:19 -0700</date>
            <delta_ts>2009-04-03 14:24:02 -0700</delta_ts>
            <desc>Updated patch for handling HTML selects using native controls on the Mac</desc>
            <filename>mac_cr_popups4</filename>
            <type>text/plain</type>
            <size>11320</size>
            <attacher name="Paul Godavari">paul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MjExOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDktMDMtMzAgIFBhdWwgR29kYXZhcmkgIDxwYXVsQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2OTIKKyAgICAgICAgRW5h
YmxlIFBvcHVwTWVudUNocm9taXVtIHRvIGhhbmRsZSBIVE1MIHNlbGVjdCBwb3B1cHMgdXNpbmcg
bmF0aXZlCisgICAgICAgIGNvY29hIGNvbnRyb2xzIG9uIHRoZSBNYWMsIGFsbCBvdGhlciBwbGF0
Zm9ybXMgYXJlIHVuY2hhbmdlZC4KKworICAgICAgICBXZSBhbHNvIHNwbGl0IG91dCB0aGUgc3Rv
cmFnZSBjb250YWluZXIgZm9yIHRoZSBwb3B1cCBtZW51IGl0ZW1zCisgICAgICAgIHNvIHRoYXQg
Q2hyb21lQ2xpZW50Q2hyb21pdW0gY2FuIGFjY2VzcyB0aGVtIGZvciBmb3J3YXJkaW5nIHRvCisg
ICAgICAgIHRoZSBlbWJlZGRpbmcgaG9zdCAoQ2hyb21pdW0uYXBwIG9yIHRlc3Rfc2hlbGwpLgor
CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBvcHVwTGlzdEJveDo6aXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250
YWluZXI6OlBvcHVwQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVy
Ojp+UG9wdXBDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250YWluZXI6OnNo
b3dQb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6c2hvd1NlbGVjdFBv
cHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjptZW51SXRlbUhlaWdodCk6
CisgICAgICAgIChXZWJDb3JlOjpwb3B1cERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBM
aXN0Qm94Ojppc1NlbGVjdGFibGVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJv
eDo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94Ojpj
bGVhcik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnNob3cpOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
b3B1cEl0ZW06Oik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cEl0ZW06OlBvcHVwSXRlbSk6CisK
IDIwMDktMDMtMzAgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81ODM4ODcxPiBDcmFzaFRyYWNlcjogMTQ4MyBjcmFzaGVzIFF1
aWNrbG9va2luZwpJbmRleDogV2ViQ29yZS9wYWdlL2Nocm9taXVtL0Nocm9tZUNsaWVudENocm9t
aXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2Nocm9taXVtL0Nocm9tZUNsaWVudENo
cm9taXVtLmgJKHJldmlzaW9uIDQyMTE1KQorKysgV2ViQ29yZS9wYWdlL2Nocm9taXVtL0Nocm9t
ZUNsaWVudENocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgRnJh
bWVsZXNzU2Nyb2xsVmlldzsKICAgICBjbGFzcyBJbnRSZWN0OworICAgIGNsYXNzIFBvcHVwQ29u
dGFpbmVyOwogCiAgICAgLy8gQ29udGFpbnMgQ2hyb21pdW0tc3BlY2lmaWMgZXh0ZW5zaW9ucyB0
byB0aGUgQ2hyb21lQ2xpZW50LiAgT25seSBwdXQKICAgICAvLyB0aGluZ3MgaGVyZSB0aGF0IGRv
bid0IG1ha2Ugc2Vuc2UgZm9yIG90aGVyIHBvcnRzLgpAQCAtNDQsNyArNDQsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgLy8gTm90aWZpZXMgdGhlIGNsaWVu
dCBvZiBhIG5ldyBwb3B1cCB3aWRnZXQuICBUaGUgY2xpZW50IHNob3VsZCBwbGFjZQogICAgICAg
ICAvLyBhbmQgc2l6ZSB0aGUgd2lkZ2V0IHdpdGggdGhlIGdpdmVuIGJvdW5kcywgcmVsYXRpdmUg
dG8gdGhlIHNjcmVlbi4KLSAgICAgICAgdmlydHVhbCB2b2lkIHBvcHVwT3BlbmVkKEZyYW1lbGVz
c1Njcm9sbFZpZXcqIHBvcHVwVmlldywgY29uc3QgSW50UmVjdCYgYm91bmRzLCBib29sIGZvY3Vz
T25TaG93KSA9IDA7CisgICAgICAgIC8vIElmIGhhbmRsZUV4dGVybmFsIGlzIHRydWUsIHRoZW4g
dGhlbiBkcmF3aW5nIGFuZCBpbnB1dCBoYW5kbGluZyBmb3IKKyAgICAgICAgLy8gdGhlIHBvcHVw
IHdpbGwgYmUgaGFuZGxlZCBieSB0aGUgZXh0ZXJuYWwgZW1iZWRkZXIuCisgICAgICAgIHZpcnR1
YWwgdm9pZCBwb3B1cE9wZW5lZChQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIsIGNvbnN0
IEludFJlY3QmIGJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
Zm9jdXNPblNob3csIGJvb2wgaGFuZGxlRXh0ZXJuYWwpID0gMDsKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVu
dUNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bv
cHVwTWVudUNocm9taXVtLmNwcAkocmV2aXNpb24gNDIxMTUpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDI2
ICsxMzYsMTkgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUgcG9wdXAgd2Fu
dHMgdG8gcHJvY2VzcyBldmVudHMgZm9yIHRoZSBwYXNzZWQga2V5LgogICAgIGJvb2wgaXNJbnRl
cmVzdGVkSW5FdmVudEZvcktleShpbnQga2V5Q29kZSk7CiAKKyAgICAvLyBHZXRzIHRoZSBoZWln
aHQgb2YgYSByb3cuCisgICAgaW50IGdldFJvd0hlaWdodChpbnQgaW5kZXgpOworCisgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoZSBzZWxlY3Rpb24gY2FuIGJlIGNoYW5nZWQgdG8gaW5kZXguCisg
ICAgLy8gRGlzYWJsZWQgaXRlbXMsIG9yIGxhYmVscyBjYW5ub3QgYmUgc2VsZWN0ZWQuCisgICAg
Ym9vbCBpc1NlbGVjdGFibGVJdGVtKGludCBpbmRleCk7CisKKyAgICBjb25zdCBWZWN0b3I8UG9w
dXBJdGVtKj4mIGl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtczsgfQorCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBQb3B1cENvbnRhaW5lcjsKICAgICBmcmllbmQgY2xhc3MgUmVmQ291
bnRlZDxQb3B1cExpc3RCb3g+OwogCi0gICAgLy8gQSB0eXBlIG9mIExpc3QgSXRlbQotICAgIGVu
dW0gTGlzdEl0ZW1UeXBlIHsKLSAgICAgICAgVHlwZU9wdGlvbiwKLSAgICAgICAgVHlwZUdyb3Vw
LAotICAgICAgICBUeXBlU2VwYXJhdG9yCi0gICAgfTsKLQotICAgIC8vIEEgaXRlbSAocmVwcmVz
ZW50ZWQgYnkgPG9wdGlvbj4gb3IgPG9wdGdyb3VwPikgaW4gdGhlIDxzZWxlY3Q+IHdpZGdldC4g
Ci0gICAgc3RydWN0IExpc3RJdGVtIHsKLSAgICAgICAgTGlzdEl0ZW0oY29uc3QgU3RyaW5nJiBs
YWJlbCwgTGlzdEl0ZW1UeXBlIHR5cGUpCi0gICAgICAgICAgICA6IGxhYmVsKGxhYmVsLmNvcHko
KSksIHR5cGUodHlwZSksIHkoMCkge30KLSAgICAgICAgU3RyaW5nIGxhYmVsOwotICAgICAgICBM
aXN0SXRlbVR5cGUgdHlwZTsKLSAgICAgICAgaW50IHk7ICAvLyB5IG9mZnNldCBvZiB0aGlzIGl0
ZW0sIHJlbGF0aXZlIHRvIHRoZSB0b3Agb2YgdGhlIHBvcHVwLgotICAgIH07Ci0KICAgICBQb3B1
cExpc3RCb3goUG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0
dGluZ3MmIHNldHRpbmdzKQogICAgICAgICA6IG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgICAg
ICwgbV9vcmlnaW5hbEluZGV4KDApCkBAIC0xODQsMTAgKzE3Nyw2IEBAIHByaXZhdGU6CiAgICAg
Ly8gdGhlIHdlYiBwYWdlLCBhbmQgY2xvc2VzIHRoZSBwb3B1cC4KICAgICB2b2lkIGFjY2VwdElu
ZGV4KGludCBpbmRleCk7CiAKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHNlbGVjdGlvbiBj
YW4gYmUgY2hhbmdlZCB0byBpbmRleC4KLSAgICAvLyBEaXNhYmxlZCBpdGVtcywgb3IgbGFiZWxz
IGNhbm5vdCBiZSBzZWxlY3RlZC4KLSAgICBib29sIGlzU2VsZWN0YWJsZUl0ZW0oaW50IGluZGV4
KTsKLQogICAgIC8vIENsZWFycyB0aGUgc2VsZWN0aW9uIChzbyBubyByb3cgYXBwZWFycyBzZWxl
Y3RlZCkuCiAgICAgdm9pZCBjbGVhclNlbGVjdGlvbigpOwogCkBAIC0xOTgsOCArMTg3LDYgQEAg
cHJpdmF0ZToKICAgICAvLyBJbnZhbGlkYXRlcyB0aGUgcm93IGF0IHRoZSBnaXZlbiBpbmRleC4g
CiAgICAgdm9pZCBpbnZhbGlkYXRlUm93KGludCBpbmRleCk7CiAKLSAgICAvLyBHZXRzIHRoZSBo
ZWlnaHQgb2YgYSByb3cuCi0gICAgaW50IGdldFJvd0hlaWdodChpbnQgaW5kZXgpOwogICAgIC8v
IEdldCB0aGUgYm91bmRzIG9mIGEgcm93LiAKICAgICBJbnRSZWN0IGdldFJvd0JvdW5kcyhpbnQg
aW5kZXgpOwogCkBAIC0yNTAsNyArMjM3LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9iYXNlV2lk
dGg7CiAKICAgICAvLyBBIGxpc3Qgb2YgdGhlIG9wdGlvbnMgY29udGFpbmVkIHdpdGhpbiB0aGUg
PHNlbGVjdD4KLSAgICBWZWN0b3I8TGlzdEl0ZW0qPiBtX2l0ZW1zOworICAgIFZlY3RvcjxQb3B1
cEl0ZW0qPiBtX2l0ZW1zOwogCiAgICAgLy8gVGhlIDxzZWxlY3Q+IFBvcHVwTWVudUNsaWVudCB0
aGF0IG9wZW5lZCB1cy4KICAgICBQb3B1cE1lbnVDbGllbnQqIG1fcG9wdXBDbGllbnQ7CkBAIC0z
MTAsNyArMjk3LDggQEAgUGFzc1JlZlB0cjxQb3B1cENvbnRhaW5lcj4gUG9wdXBDb250YWluZQog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUG9wdXBDb250YWluZXIoY2xpZW50LCBzZXR0aW5ncykp
OwogfQogCi1Qb3B1cENvbnRhaW5lcjo6UG9wdXBDb250YWluZXIoUG9wdXBNZW51Q2xpZW50KiBj
bGllbnQsIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MmIHNldHRpbmdzKQorUG9wdXBDb250
YWluZXI6OlBvcHVwQ29udGFpbmVyKFBvcHVwTWVudUNsaWVudCogY2xpZW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MmIHNldHRp
bmdzKQogICAgIDogbV9saXN0Qm94KFBvcHVwTGlzdEJveDo6Y3JlYXRlKGNsaWVudCwgc2V0dGlu
Z3MpKQogICAgICwgbV9zZXR0aW5ncyhzZXR0aW5ncykKIHsKQEAgLTMxOSw3ICszMDcsNyBAQCBQ
b3B1cENvbnRhaW5lcjo6UG9wdXBDb250YWluZXIoUG9wdXBNZW51CiAKIFBvcHVwQ29udGFpbmVy
Ojp+UG9wdXBDb250YWluZXIoKQogewotICAgIGlmIChtX2xpc3RCb3gpCisgICAgaWYgKG1fbGlz
dEJveCAmJiBtX2xpc3RCb3gtPnBhcmVudCgpKQogICAgICAgICByZW1vdmVDaGlsZChtX2xpc3RC
b3guZ2V0KCkpOwogfQogCkBAIC0zNDIsNyArMzMwLDcgQEAgdm9pZCBQb3B1cENvbnRhaW5lcjo6
c2hvd1BvcHVwKEZyYW1lVmlldwogICAgICAgICBpZiAod2lkZ2V0UmVjdC5ib3R0b20oKSA+IHN0
YXRpY19jYXN0PGludD4oc2NyZWVuLmJvdHRvbSgpKSkKICAgICAgICAgICAgIHdpZGdldFJlY3Qu
bW92ZSgwLCAtKHdpZGdldFJlY3QuaGVpZ2h0KCkgKyBzZWxlY3RIZWlnaHQpKTsKIAotICAgICAg
ICBjaHJvbWVDbGllbnQtPnBvcHVwT3BlbmVkKHRoaXMsIHdpZGdldFJlY3QsIG1fc2V0dGluZ3Mu
Zm9jdXNPblNob3cpOworICAgICAgICBjaHJvbWVDbGllbnQtPnBvcHVwT3BlbmVkKHRoaXMsIHdp
ZGdldFJlY3QsIG1fc2V0dGluZ3MuZm9jdXNPblNob3csIGZhbHNlKTsKICAgICB9CiAKICAgICBp
ZiAoIW1fbGlzdEJveC0+cGFyZW50KCkpCkBAIC0zNTcsNiArMzQ1LDE5IEBAIHZvaWQgUG9wdXBD
b250YWluZXI6OnNob3dQb3B1cChGcmFtZVZpZXcKICAgICBpbnZhbGlkYXRlKCk7CiB9CiAKK3Zv
aWQgUG9wdXBDb250YWluZXI6OnNob3dTZWxlY3RQb3B1cChjb25zdCBJbnRSZWN0JiByZWN0LCBG
cmFtZVZpZXcqIHYsIGludCBpbmRleCkKK3sKKyAgICAgaWYgKCFsaXN0Qm94KCkpCisgICAgICAg
IHJldHVybjsKKyAgICAgCisgICAgIGxpc3RCb3goKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAg
ICAgCisgICAgIC8vIEdldCB0aGUgQ2hyb21lQ2xpZW50IGFuZCBwYXNzIGl0IHRoZSBwb3B1cCBt
ZW51J3MgbGlzdGJveCBkYXRhLgorICAgICBDaHJvbWVDbGllbnRDaHJvbWl1bSogY2xpZW50ID0g
c3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50Q2hyb21pdW0qPigKKyAgICAgICAgICB2LT5mcmFtZSgp
LT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKSk7CisgICAgIGNsaWVudC0+cG9wdXBPcGVuZWQo
dGhpcywgcmVjdCwgdHJ1ZSwgdHJ1ZSk7Cit9CisgIAogdm9pZCBQb3B1cENvbnRhaW5lcjo6aGlk
ZVBvcHVwKCkKIHsKICAgICBpZiAoY2xpZW50KCkpCkBAIC00ODQsNiArNDg1LDE2IEBAIGludCBQ
b3B1cENvbnRhaW5lcjo6c2VsZWN0ZWRJbmRleCgpIGNvbnMKIHsKICAgICByZXR1cm4gbV9saXN0
Qm94LT5zZWxlY3RlZEluZGV4KCk7CiB9CisgIAoraW50IFBvcHVwQ29udGFpbmVyOjptZW51SXRl
bUhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGlzdEJveC0+Z2V0Um93SGVpZ2h0KDAp
OworfQorICAKK2NvbnN0IFdURjo6VmVjdG9yPFBvcHVwSXRlbSo+JiBQb3B1cENvbnRhaW5lcjo6
IHBvcHVwRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGlzdEJveC0+aXRlbXMoKTsKK30K
IAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gUG9wdXBMaXN0Qm94IGltcGxlbWVudGF0aW9u
CkBAIC05MjEsNyArOTMyLDcgQEAgdm9pZCBQb3B1cExpc3RCb3g6OnNjcm9sbFRvUmV2ZWFsUm93
KGludAogCiBib29sIFBvcHVwTGlzdEJveDo6aXNTZWxlY3RhYmxlSXRlbShpbnQgaW5kZXgpCiB7
Ci0gICAgcmV0dXJuIG1faXRlbXNbaW5kZXhdLT50eXBlID09IFR5cGVPcHRpb24gJiYgbV9wb3B1
cENsaWVudC0+aXRlbUlzRW5hYmxlZChpbmRleCk7CisgICAgcmV0dXJuIG1faXRlbXNbaW5kZXhd
LT50eXBlID09IFBvcHVwSXRlbTo6VHlwZU9wdGlvbiAmJiBtX3BvcHVwQ2xpZW50LT5pdGVtSXNF
bmFibGVkKGluZGV4KTsKIH0KIAogdm9pZCBQb3B1cExpc3RCb3g6OmNsZWFyU2VsZWN0aW9uKCkK
QEAgLTEwMTAsMTQgKzEwMjEsMTUgQEAgdm9pZCBQb3B1cExpc3RCb3g6OnVwZGF0ZUZyb21FbGVt
ZW50KCkKIAogICAgIGludCBzaXplID0gbV9wb3B1cENsaWVudC0+bGlzdFNpemUoKTsKICAgICBm
b3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBMaXN0SXRlbVR5cGUgdHlw
ZTsKKyAgICAgICAgUG9wdXBJdGVtOjpUeXBlIHR5cGU7CiAgICAgICAgIGlmIChtX3BvcHVwQ2xp
ZW50LT5pdGVtSXNTZXBhcmF0b3IoaSkpCi0gICAgICAgICAgICB0eXBlID0gUG9wdXBMaXN0Qm94
OjpUeXBlU2VwYXJhdG9yOworICAgICAgICAgICAgdHlwZSA9IFBvcHVwSXRlbTo6VHlwZVNlcGFy
YXRvcjsKICAgICAgICAgZWxzZSBpZiAobV9wb3B1cENsaWVudC0+aXRlbUlzTGFiZWwoaSkpCi0g
ICAgICAgICAgICB0eXBlID0gUG9wdXBMaXN0Qm94OjpUeXBlR3JvdXA7CisgICAgICAgICAgICB0
eXBlID0gUG9wdXBJdGVtOjpUeXBlR3JvdXA7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHR5
cGUgPSBQb3B1cExpc3RCb3g6OlR5cGVPcHRpb247Ci0gICAgICAgIG1faXRlbXMuYXBwZW5kKG5l
dyBMaXN0SXRlbShtX3BvcHVwQ2xpZW50LT5pdGVtVGV4dChpKSwgdHlwZSkpOworICAgICAgICAg
ICAgdHlwZSA9IFBvcHVwSXRlbTo6VHlwZU9wdGlvbjsKKyAgICAgICAgbV9pdGVtcy5hcHBlbmQo
bmV3IFBvcHVwSXRlbShtX3BvcHVwQ2xpZW50LT5pdGVtVGV4dChpKSwgdHlwZSkpOworICAgICAg
ICBtX2l0ZW1zW2ldLT5lbmFibGVkID0gaXNTZWxlY3RhYmxlSXRlbShpKTsKICAgICB9CiAKICAg
ICBtX3NlbGVjdGVkSW5kZXggPSBtX3BvcHVwQ2xpZW50LT5zZWxlY3RlZEluZGV4KCk7CkBAIC0x
MDg4LDcgKzExMDAsNyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6bGF5b3V0KCkKIAogdm9pZCBQb3B1
cExpc3RCb3g6OmNsZWFyKCkKIHsKLSAgICBmb3IgKFZlY3RvcjxMaXN0SXRlbSo+OjppdGVyYXRv
ciBpdCA9IG1faXRlbXMuYmVnaW4oKTsgaXQgIT0gbV9pdGVtcy5lbmQoKTsgKytpdCkKKyAgICBm
b3IgKFZlY3RvcjxQb3B1cEl0ZW0qPjo6aXRlcmF0b3IgaXQgPSBtX2l0ZW1zLmJlZ2luKCk7IGl0
ICE9IG1faXRlbXMuZW5kKCk7ICsraXQpCiAgICAgICAgIGRlbGV0ZSAqaXQ7CiAgICAgbV9pdGVt
cy5jbGVhcigpOwogfQpAQCAtMTExNSwxMSArMTEyNywxNSBAQCBQb3B1cE1lbnU6On5Qb3B1cE1l
bnUoKQogICAgIGhpZGUoKTsKIH0KIAotdm9pZCBQb3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVj
dCYgciwgRnJhbWVWaWV3KiB2LCBpbnQgaW5kZXgpIAordm9pZCBQb3B1cE1lbnU6OnNob3coY29u
c3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2LCBpbnQgaW5kZXgpCiB7CiAgICAgaWYgKCFwLnBv
cHVwKQogICAgICAgICBwLnBvcHVwID0gUG9wdXBDb250YWluZXI6OmNyZWF0ZShjbGllbnQoKSwg
ZHJvcERvd25TZXR0aW5ncyk7CisjaWYgUExBVEZPUk0oREFSV0lOKQorICAgIHAucG9wdXAtPnNo
b3dTZWxlY3RQb3B1cChyLCB2LCBpbmRleCk7CisjZWxzZQogICAgIHAucG9wdXAtPnNob3cociwg
diwgaW5kZXgpOworI2VuZGlmCiB9CiAKIHZvaWQgUG9wdXBNZW51OjpoaWRlKCkKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmgJKHJldmlzaW9u
IDQyMTE1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0MiwyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgRnJhbWVWaWV3OwogICAgIGNsYXNzIFBvcHVwTGlzdEJveDsKIAorICAgIC8vIEEg
Y29udGFpbmVyIGZvciB0aGUgZGF0YSBmb3IgZWFjaCBtZW51IGl0ZW0gKGUuZy4gcmVwcmVzZW50
ZWQgYnkgPG9wdGlvbj4KKyAgICAvLyBvciA8b3B0Z3JvdXA+IGluIGEgPHNlbGVjdD4gd2lkZ2V0
KSBhbmQgaXMgdXNlZCBieSBQb3B1cExpc3RCb3guCisgICAgc3RydWN0IFBvcHVwSXRlbSB7Cisg
ICAgICAgIGVudW0gVHlwZSB7CisgICAgICAgICAgICBUeXBlT3B0aW9uLAorICAgICAgICAgICAg
VHlwZUdyb3VwLAorICAgICAgICAgICAgVHlwZVNlcGFyYXRvcgorICAgICAgICB9OworCisgICAg
ICAgIFBvcHVwSXRlbShjb25zdCBTdHJpbmcmIGxhYmVsLCBUeXBlIHR5cGUpCisgICAgICAgICAg
ICA6IGxhYmVsKGxhYmVsKSwgdHlwZSh0eXBlKSwgeSgwKSB7fQorICAgICAgICBTdHJpbmcgbGFi
ZWw7CisgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgaW50IHk7ICAvLyB5IG9mZnNldCBvZiB0
aGlzIGl0ZW0sIHJlbGF0aXZlIHRvIHRoZSB0b3Agb2YgdGhlIHBvcHVwLgorICAgICAgICBib29s
IGVuYWJsZWQ7CisgICAgfTsKKwogICAgIC8vIEZJWE1FOiBPdXIgRnJhbWVsZXNzU2Nyb2xsVmll
dyBjbGFzc2VzIHNob3VsZCBwcm9iYWJseSBpbXBsZW1lbnQgSG9zdFdpbmRvdyEKIAogICAgIC8v
IFRoZSBQb3B1cENvbnRhaW5lciBjbGFzcyBob2xkcyBhIFBvcHVwTGlzdEJveCAoc2VlIGNwcCBm
aWxlKS4gIEl0cyBzb2xlIHB1cnBvc2UgaXMgdG8gYmUKQEAgLTk0LDkgKzExMSwxNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFNob3cgdGhlIHBvcHVwCiAgICAgICAgIHZvaWQg
c2hvd1BvcHVwKEZyYW1lVmlldyopOwogCisgICAgICAgIC8vIFVzZWQgb24gTWFjIENocm9taXVt
IGZvciBIVE1MIHNlbGVjdCBwb3B1cCBtZW51cy4KKyAgICAgICAgdm9pZCBzaG93U2VsZWN0UG9w
dXAoY29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyosIGludCBpbmRleCk7CisKICAgICAgICAgLy8g
U2hvdyB0aGUgcG9wdXAgaW4gdGhlIHNwZWNpZmllZCByZWN0IGZvciB0aGUgc3BlY2lmaWVkIGZy
YW1lLgogICAgICAgICAvLyBOb3RlOiB0aGlzIGNvZGUgd2FzIHNvbWVob3cgYXJiaXRyYXJpbHkg
ZmFjdG9yZWQtb3V0IG9mIHRoZSBQb3B1cCBjbGFzcwotICAgICAgICAvLyBzbyBXZWJWaWV3SW1w
bCBjYW4gY3JlYXRlIGEgUG9wdXBDb250YWluZXIuCisgICAgICAgIC8vIHNvIFdlYlZpZXdJbXBs
IGNhbiBjcmVhdGUgYSBQb3B1cENvbnRhaW5lci4gVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IKKyAg
ICAgICAgLy8gZGlzcGxheWluZyBhdXRvIGNvbXBsZXRlIHBvcHVwIG1lbnVzIG9uIE1hYyBDaHJv
bWl1bSwgYW5kIGZvciBhbGwKKyAgICAgICAgLy8gcG9wdXBzIG9uIG90aGVyIHBsYXRmb3Jtcy4K
ICAgICAgICAgdm9pZCBzaG93KGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcqLCBpbnQgaW5kZXgp
OwogCiAgICAgICAgIC8vIEhpZGUgdGhlIHBvcHVwLiAgRG8gbm90IGNhbGwgdGhpcyBkaXJlY3Rs
eTogdXNlIGNsaWVudC0+aGlkZVBvcHVwKCkuCkBAIC0xMTMsNyArMTM1LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBSZWZyZXNoIHRoZSBwb3B1cCB2YWx1ZXMgZnJvbSB0
aGUgUG9wdXBNZW51Q2xpZW50LgogICAgICAgICB2b2lkIHJlZnJlc2goKTsKLQorICAgICAgCisg
ICAgICAgIC8vIFRoZSBtZW51IHBlci1pdGVtIGRhdGEuCisgICAgICAgIGNvbnN0IFdURjo6VmVj
dG9yPFBvcHVwSXRlbSo+JiBwb3B1cERhdGEoKSBjb25zdDsKKyAgICAgIAorICAgICAgICAvLyBU
aGUgaGVpZ2h0IG9mIGEgcm93IGluIHRoZSBtZW51LgorICAgICAgICBpbnQgbWVudUl0ZW1IZWln
aHQoKSBjb25zdDsKKyAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBX
VEY6OlJlZkNvdW50ZWQ8UG9wdXBDb250YWluZXI+OwogCg==
</data>
<flag name="review"
          id="14414"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29242</attachid>
            <date>2009-04-03 14:24:02 -0700</date>
            <delta_ts>2009-04-03 14:37:31 -0700</delta_ts>
            <desc>Update for handling Mac Chromium popups with native controls</desc>
            <filename>mac_cr_popups5</filename>
            <type>text/plain</type>
            <size>12456</size>
            <attacher name="Paul Godavari">paul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MjIwOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDktMDQtMDMgIFBhdWwgR29kYXZhcmkgIDxwYXVsQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2OTIKKyAgICAgICAgRW5h
YmxlIFBvcHVwTWVudUNocm9taXVtIHRvIGhhbmRsZSBIVE1MIHNlbGVjdCBwb3B1cHMgdXNpbmcg
bmF0aXZlCisgICAgICAgIGNvY29hIGNvbnRyb2xzIG9uIHRoZSBNYWMsIGFsbCBvdGhlciBwbGF0
Zm9ybXMgYXJlIHVuY2hhbmdlZC4KKworICAgICAgICBXZSBhbHNvIHNwbGl0IG91dCB0aGUgc3Rv
cmFnZSBjb250YWluZXIgZm9yIHRoZSBwb3B1cCBtZW51IGl0ZW1zCisgICAgICAgIHNvIHRoYXQg
Q2hyb21lQ2xpZW50Q2hyb21pdW0gY2FuIGFjY2VzcyB0aGVtIGZvciBmb3J3YXJkaW5nIHRvCisg
ICAgICAgIHRoZSBlbWJlZGRpbmcgaG9zdCAoQ2hyb21pdW0uYXBwIG9yIHRlc3Rfc2hlbGwpLgor
CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBvcHVwTGlzdEJveDo6aXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250
YWluZXI6OlBvcHVwQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVy
Ojp+UG9wdXBDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250YWluZXI6OnNo
b3dQb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6c2hvd1NlbGVjdFBv
cHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjptZW51SXRlbUhlaWdodCk6
CisgICAgICAgIChXZWJDb3JlOjpwb3B1cERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBM
aXN0Qm94Ojppc1NlbGVjdGFibGVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJv
eDo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94Ojpj
bGVhcik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnNob3cpOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
b3B1cEl0ZW06Oik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cEl0ZW06OlBvcHVwSXRlbSk6CisK
IDIwMDktMDQtMDMgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgpJbmRleDogV2ViQ29yZS9wYWdlL2Nocm9taXVtL0No
cm9tZUNsaWVudENocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2Nocm9taXVt
L0Nocm9tZUNsaWVudENocm9taXVtLmgJKHJldmlzaW9uIDQyMjA5KQorKysgV2ViQ29yZS9wYWdl
L2Nocm9taXVtL0Nocm9tZUNsaWVudENocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDgg
KzM1LDggQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci0gICAgY2xhc3MgRnJhbWVsZXNzU2Nyb2xsVmlldzsKICAgICBjbGFzcyBJbnRSZWN0OworICAg
IGNsYXNzIFBvcHVwQ29udGFpbmVyOwogCiAgICAgLy8gQ29udGFpbnMgQ2hyb21pdW0tc3BlY2lm
aWMgZXh0ZW5zaW9ucyB0byB0aGUgQ2hyb21lQ2xpZW50LiAgT25seSBwdXQKICAgICAvLyB0aGlu
Z3MgaGVyZSB0aGF0IGRvbid0IG1ha2Ugc2Vuc2UgZm9yIG90aGVyIHBvcnRzLgpAQCAtNDQsNyAr
NDQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgLy8gTm90
aWZpZXMgdGhlIGNsaWVudCBvZiBhIG5ldyBwb3B1cCB3aWRnZXQuICBUaGUgY2xpZW50IHNob3Vs
ZCBwbGFjZQogICAgICAgICAvLyBhbmQgc2l6ZSB0aGUgd2lkZ2V0IHdpdGggdGhlIGdpdmVuIGJv
dW5kcywgcmVsYXRpdmUgdG8gdGhlIHNjcmVlbi4KLSAgICAgICAgdmlydHVhbCB2b2lkIHBvcHVw
T3BlbmVkKEZyYW1lbGVzc1Njcm9sbFZpZXcqIHBvcHVwVmlldywgY29uc3QgSW50UmVjdCYgYm91
bmRzLCBib29sIGZvY3VzT25TaG93KSA9IDA7CisgICAgICAgIC8vIElmIGhhbmRsZUV4dGVybmFs
IGlzIHRydWUsIHRoZW4gZHJhd2luZyBhbmQgaW5wdXQgaGFuZGxpbmcgZm9yIHRoZQorICAgICAg
ICAvLyBwb3B1cCB3aWxsIGJlIGhhbmRsZWQgYnkgdGhlIGV4dGVybmFsIGVtYmVkZGVyLgorICAg
ICAgICB2aXJ0dWFsIHZvaWQgcG9wdXBPcGVuZWQoUG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFp
bmVyLCBjb25zdCBJbnRSZWN0JiBib3VuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGZvY3VzT25TaG93LCBib29sIGhhbmRsZUV4dGVybmFsKSA9IDA7CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDQyMjA5KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzNiwyNiArMTM2LDE5IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhl
IHBvcHVwIHdhbnRzIHRvIHByb2Nlc3MgZXZlbnRzIGZvciB0aGUgcGFzc2VkIGtleS4KICAgICBi
b29sIGlzSW50ZXJlc3RlZEluRXZlbnRGb3JLZXkoaW50IGtleUNvZGUpOwogCisgICAgLy8gR2V0
cyB0aGUgaGVpZ2h0IG9mIGEgcm93LgorICAgIGludCBnZXRSb3dIZWlnaHQoaW50IGluZGV4KTsK
KworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2VsZWN0aW9uIGNhbiBiZSBjaGFuZ2VkIHRv
IGluZGV4LgorICAgIC8vIERpc2FibGVkIGl0ZW1zLCBvciBsYWJlbHMgY2Fubm90IGJlIHNlbGVj
dGVkLgorICAgIGJvb2wgaXNTZWxlY3RhYmxlSXRlbShpbnQgaW5kZXgpOworCisgICAgY29uc3Qg
VmVjdG9yPFBvcHVwSXRlbSo+JiBpdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1faXRlbXM7IH0KKwog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUG9wdXBDb250YWluZXI7CiAgICAgZnJpZW5kIGNs
YXNzIFJlZkNvdW50ZWQ8UG9wdXBMaXN0Qm94PjsKIAotICAgIC8vIEEgdHlwZSBvZiBMaXN0IEl0
ZW0KLSAgICBlbnVtIExpc3RJdGVtVHlwZSB7Ci0gICAgICAgIFR5cGVPcHRpb24sCi0gICAgICAg
IFR5cGVHcm91cCwKLSAgICAgICAgVHlwZVNlcGFyYXRvcgotICAgIH07Ci0KLSAgICAvLyBBIGl0
ZW0gKHJlcHJlc2VudGVkIGJ5IDxvcHRpb24+IG9yIDxvcHRncm91cD4pIGluIHRoZSA8c2VsZWN0
PiB3aWRnZXQuIAotICAgIHN0cnVjdCBMaXN0SXRlbSB7Ci0gICAgICAgIExpc3RJdGVtKGNvbnN0
IFN0cmluZyYgbGFiZWwsIExpc3RJdGVtVHlwZSB0eXBlKQotICAgICAgICAgICAgOiBsYWJlbChs
YWJlbC5jb3B5KCkpLCB0eXBlKHR5cGUpLCB5KDApIHt9Ci0gICAgICAgIFN0cmluZyBsYWJlbDsK
LSAgICAgICAgTGlzdEl0ZW1UeXBlIHR5cGU7Ci0gICAgICAgIGludCB5OyAgLy8geSBvZmZzZXQg
b2YgdGhpcyBpdGVtLCByZWxhdGl2ZSB0byB0aGUgdG9wIG9mIHRoZSBwb3B1cC4KLSAgICB9Owot
CiAgICAgUG9wdXBMaXN0Qm94KFBvcHVwTWVudUNsaWVudCogY2xpZW50LCBjb25zdCBQb3B1cENv
bnRhaW5lclNldHRpbmdzJiBzZXR0aW5ncykKICAgICAgICAgOiBtX3NldHRpbmdzKHNldHRpbmdz
KQogICAgICAgICAsIG1fb3JpZ2luYWxJbmRleCgwKQpAQCAtMTg0LDEwICsxNzcsNiBAQCBwcml2
YXRlOgogICAgIC8vIHRoZSB3ZWIgcGFnZSwgYW5kIGNsb3NlcyB0aGUgcG9wdXAuCiAgICAgdm9p
ZCBhY2NlcHRJbmRleChpbnQgaW5kZXgpOwogCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBz
ZWxlY3Rpb24gY2FuIGJlIGNoYW5nZWQgdG8gaW5kZXguCi0gICAgLy8gRGlzYWJsZWQgaXRlbXMs
IG9yIGxhYmVscyBjYW5ub3QgYmUgc2VsZWN0ZWQuCi0gICAgYm9vbCBpc1NlbGVjdGFibGVJdGVt
KGludCBpbmRleCk7Ci0KICAgICAvLyBDbGVhcnMgdGhlIHNlbGVjdGlvbiAoc28gbm8gcm93IGFw
cGVhcnMgc2VsZWN0ZWQpLgogICAgIHZvaWQgY2xlYXJTZWxlY3Rpb24oKTsKIApAQCAtMTk4LDgg
KzE4Nyw2IEBAIHByaXZhdGU6CiAgICAgLy8gSW52YWxpZGF0ZXMgdGhlIHJvdyBhdCB0aGUgZ2l2
ZW4gaW5kZXguIAogICAgIHZvaWQgaW52YWxpZGF0ZVJvdyhpbnQgaW5kZXgpOwogCi0gICAgLy8g
R2V0cyB0aGUgaGVpZ2h0IG9mIGEgcm93LgotICAgIGludCBnZXRSb3dIZWlnaHQoaW50IGluZGV4
KTsKICAgICAvLyBHZXQgdGhlIGJvdW5kcyBvZiBhIHJvdy4gCiAgICAgSW50UmVjdCBnZXRSb3dC
b3VuZHMoaW50IGluZGV4KTsKIApAQCAtMjUwLDcgKzIzNyw3IEBAIHByaXZhdGU6CiAgICAgaW50
IG1fYmFzZVdpZHRoOwogCiAgICAgLy8gQSBsaXN0IG9mIHRoZSBvcHRpb25zIGNvbnRhaW5lZCB3
aXRoaW4gdGhlIDxzZWxlY3Q+Ci0gICAgVmVjdG9yPExpc3RJdGVtKj4gbV9pdGVtczsKKyAgICBW
ZWN0b3I8UG9wdXBJdGVtKj4gbV9pdGVtczsKIAogICAgIC8vIFRoZSA8c2VsZWN0PiBQb3B1cE1l
bnVDbGllbnQgdGhhdCBvcGVuZWQgdXMuCiAgICAgUG9wdXBNZW51Q2xpZW50KiBtX3BvcHVwQ2xp
ZW50OwpAQCAtMzEwLDcgKzI5Nyw4IEBAIFBhc3NSZWZQdHI8UG9wdXBDb250YWluZXI+IFBvcHVw
Q29udGFpbmUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcHVwQ29udGFpbmVyKGNsaWVudCwg
c2V0dGluZ3MpKTsKIH0KIAotUG9wdXBDb250YWluZXI6OlBvcHVwQ29udGFpbmVyKFBvcHVwTWVu
dUNsaWVudCogY2xpZW50LCBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzJiBzZXR0aW5ncykK
K1BvcHVwQ29udGFpbmVyOjpQb3B1cENvbnRhaW5lcihQb3B1cE1lbnVDbGllbnQqIGNsaWVudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb3B1cENvbnRhaW5lclNldHRp
bmdzJiBzZXR0aW5ncykKICAgICA6IG1fbGlzdEJveChQb3B1cExpc3RCb3g6OmNyZWF0ZShjbGll
bnQsIHNldHRpbmdzKSkKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCiB7CkBAIC0zMTksNyAr
MzA3LDcgQEAgUG9wdXBDb250YWluZXI6OlBvcHVwQ29udGFpbmVyKFBvcHVwTWVudQogCiBQb3B1
cENvbnRhaW5lcjo6flBvcHVwQ29udGFpbmVyKCkKIHsKLSAgICBpZiAobV9saXN0Qm94KQorICAg
IGlmIChtX2xpc3RCb3ggJiYgbV9saXN0Qm94LT5wYXJlbnQoKSkKICAgICAgICAgcmVtb3ZlQ2hp
bGQobV9saXN0Qm94LmdldCgpKTsKIH0KIApAQCAtMzQyLDcgKzMzMCw3IEBAIHZvaWQgUG9wdXBD
b250YWluZXI6OnNob3dQb3B1cChGcmFtZVZpZXcKICAgICAgICAgaWYgKHdpZGdldFJlY3QuYm90
dG9tKCkgPiBzdGF0aWNfY2FzdDxpbnQ+KHNjcmVlbi5ib3R0b20oKSkpCiAgICAgICAgICAgICB3
aWRnZXRSZWN0Lm1vdmUoMCwgLSh3aWRnZXRSZWN0LmhlaWdodCgpICsgc2VsZWN0SGVpZ2h0KSk7
CiAKLSAgICAgICAgY2hyb21lQ2xpZW50LT5wb3B1cE9wZW5lZCh0aGlzLCB3aWRnZXRSZWN0LCBt
X3NldHRpbmdzLmZvY3VzT25TaG93KTsKKyAgICAgICAgY2hyb21lQ2xpZW50LT5wb3B1cE9wZW5l
ZCh0aGlzLCB3aWRnZXRSZWN0LCBtX3NldHRpbmdzLmZvY3VzT25TaG93LCBmYWxzZSk7CiAgICAg
fQogCiAgICAgaWYgKCFtX2xpc3RCb3gtPnBhcmVudCgpKQpAQCAtMzU3LDYgKzM0NSwxOSBAQCB2
b2lkIFBvcHVwQ29udGFpbmVyOjpzaG93UG9wdXAoRnJhbWVWaWV3CiAgICAgaW52YWxpZGF0ZSgp
OwogfQogCit2b2lkIFBvcHVwQ29udGFpbmVyOjpzaG93RXh0ZXJuYWwoY29uc3QgSW50UmVjdCYg
cmVjdCwgRnJhbWVWaWV3KiB2LCBpbnQgaW5kZXgpCit7CisgICAgIGlmICghbGlzdEJveCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICAgbGlzdEJveCgpLT51cGRhdGVGcm9tRWxlbWVudCgpOwor
CisgICAgIC8vIEdldCB0aGUgQ2hyb21lQ2xpZW50IGFuZCBwYXNzIGl0IHRoZSBwb3B1cCBtZW51
J3MgbGlzdGJveCBkYXRhLgorICAgICBDaHJvbWVDbGllbnRDaHJvbWl1bSogY2xpZW50ID0gc3Rh
dGljX2Nhc3Q8Q2hyb21lQ2xpZW50Q2hyb21pdW0qPigKKyAgICAgICAgICB2LT5mcmFtZSgpLT5w
YWdlKCktPmNocm9tZSgpLT5jbGllbnQoKSk7CisgICAgIGNsaWVudC0+cG9wdXBPcGVuZWQodGhp
cywgcmVjdCwgdHJ1ZSwgdHJ1ZSk7Cit9CisKIHZvaWQgUG9wdXBDb250YWluZXI6OmhpZGVQb3B1
cCgpCiB7CiAgICAgaWYgKGNsaWVudCgpKQpAQCAtNDg1LDYgKzQ4NiwxNiBAQCBpbnQgUG9wdXBD
b250YWluZXI6OnNlbGVjdGVkSW5kZXgoKSBjb25zCiAgICAgcmV0dXJuIG1fbGlzdEJveC0+c2Vs
ZWN0ZWRJbmRleCgpOwogfQogCitpbnQgUG9wdXBDb250YWluZXI6Om1lbnVJdGVtSGVpZ2h0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9saXN0Qm94LT5nZXRSb3dIZWlnaHQoMCk7Cit9CisKK2Nv
bnN0IFdURjo6VmVjdG9yPFBvcHVwSXRlbSo+JiBQb3B1cENvbnRhaW5lcjo6IHBvcHVwRGF0YSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGlzdEJveC0+aXRlbXMoKTsKK30KKwogLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwogLy8gUG9wdXBMaXN0Qm94IGltcGxlbWVudGF0aW9uCiAKQEAgLTgyOCw3
ICs4MzksNyBAQCBpbnQgUG9wdXBMaXN0Qm94Ojpwb2ludFRvUm93SW5kZXgoY29uc3QgCiAKICAg
ICAvLyBGSVhNRTogYmluYXJ5IHNlYXJjaCBpZiBwZXJmIG1hdHRlcnMuCiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBudW1JdGVtcygpOyArK2kpIHsKLSAgICAgICAgaWYgKHkgPCBtX2l0ZW1zW2ld
LT55KQorICAgICAgICBpZiAoeSA8IG1faXRlbXNbaV0tPnlPZmZzZXQpCiAgICAgICAgICAgICBy
ZXR1cm4gaS0xOwogICAgIH0KIApAQCAtODkwLDcgKzkwMSw3IEBAIEludFJlY3QgUG9wdXBMaXN0
Qm94OjpnZXRSb3dCb3VuZHMoaW50IGkKICAgICBpZiAoaW5kZXggPCAwKQogICAgICAgICByZXR1
cm4gSW50UmVjdCgwLCAwLCB2aXNpYmxlV2lkdGgoKSwgZ2V0Um93SGVpZ2h0KGluZGV4KSk7CiAK
LSAgICByZXR1cm4gSW50UmVjdCgwLCBtX2l0ZW1zW2luZGV4XS0+eSwgdmlzaWJsZVdpZHRoKCks
IGdldFJvd0hlaWdodChpbmRleCkpOworICAgIHJldHVybiBJbnRSZWN0KDAsIG1faXRlbXNbaW5k
ZXhdLT55T2Zmc2V0LCB2aXNpYmxlV2lkdGgoKSwgZ2V0Um93SGVpZ2h0KGluZGV4KSk7CiB9CiAK
IHZvaWQgUG9wdXBMaXN0Qm94OjppbnZhbGlkYXRlUm93KGludCBpbmRleCkKQEAgLTkyMSw3ICs5
MzIsNyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6c2Nyb2xsVG9SZXZlYWxSb3coaW50CiAKIGJvb2wg
UG9wdXBMaXN0Qm94Ojppc1NlbGVjdGFibGVJdGVtKGludCBpbmRleCkKIHsKLSAgICByZXR1cm4g
bV9pdGVtc1tpbmRleF0tPnR5cGUgPT0gVHlwZU9wdGlvbiAmJiBtX3BvcHVwQ2xpZW50LT5pdGVt
SXNFbmFibGVkKGluZGV4KTsKKyAgICByZXR1cm4gbV9pdGVtc1tpbmRleF0tPnR5cGUgPT0gUG9w
dXBJdGVtOjpUeXBlT3B0aW9uICYmIG1fcG9wdXBDbGllbnQtPml0ZW1Jc0VuYWJsZWQoaW5kZXgp
OwogfQogCiB2b2lkIFBvcHVwTGlzdEJveDo6Y2xlYXJTZWxlY3Rpb24oKQpAQCAtMTAxMCwxNCAr
MTAyMSwxNSBAQCB2b2lkIFBvcHVwTGlzdEJveDo6dXBkYXRlRnJvbUVsZW1lbnQoKQogCiAgICAg
aW50IHNpemUgPSBtX3BvcHVwQ2xpZW50LT5saXN0U2l6ZSgpOwogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIExpc3RJdGVtVHlwZSB0eXBlOworICAgICAgICBQ
b3B1cEl0ZW06OlR5cGUgdHlwZTsKICAgICAgICAgaWYgKG1fcG9wdXBDbGllbnQtPml0ZW1Jc1Nl
cGFyYXRvcihpKSkKLSAgICAgICAgICAgIHR5cGUgPSBQb3B1cExpc3RCb3g6OlR5cGVTZXBhcmF0
b3I7CisgICAgICAgICAgICB0eXBlID0gUG9wdXBJdGVtOjpUeXBlU2VwYXJhdG9yOwogICAgICAg
ICBlbHNlIGlmIChtX3BvcHVwQ2xpZW50LT5pdGVtSXNMYWJlbChpKSkKLSAgICAgICAgICAgIHR5
cGUgPSBQb3B1cExpc3RCb3g6OlR5cGVHcm91cDsKKyAgICAgICAgICAgIHR5cGUgPSBQb3B1cEl0
ZW06OlR5cGVHcm91cDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdHlwZSA9IFBvcHVwTGlz
dEJveDo6VHlwZU9wdGlvbjsKLSAgICAgICAgbV9pdGVtcy5hcHBlbmQobmV3IExpc3RJdGVtKG1f
cG9wdXBDbGllbnQtPml0ZW1UZXh0KGkpLCB0eXBlKSk7CisgICAgICAgICAgICB0eXBlID0gUG9w
dXBJdGVtOjpUeXBlT3B0aW9uOworICAgICAgICBtX2l0ZW1zLmFwcGVuZChuZXcgUG9wdXBJdGVt
KG1fcG9wdXBDbGllbnQtPml0ZW1UZXh0KGkpLCB0eXBlKSk7CisgICAgICAgIG1faXRlbXNbaV0t
PmVuYWJsZWQgPSBpc1NlbGVjdGFibGVJdGVtKGkpOwogICAgIH0KIAogICAgIG1fc2VsZWN0ZWRJ
bmRleCA9IG1fcG9wdXBDbGllbnQtPnNlbGVjdGVkSW5kZXgoKTsKQEAgLTEwMzYsNyArMTA0OCw3
IEBAIHZvaWQgUG9wdXBMaXN0Qm94OjpsYXlvdXQoKQogICAgICAgICBGb250IGl0ZW1Gb250ID0g
Z2V0Um93Rm9udChpKTsKIAogICAgICAgICAvLyBQbGFjZSB0aGUgaXRlbSB2ZXJ0aWNhbGx5Lgot
ICAgICAgICBtX2l0ZW1zW2ldLT55ID0geTsKKyAgICAgICAgbV9pdGVtc1tpXS0+eU9mZnNldCA9
IHk7CiAgICAgICAgIHkgKz0gaXRlbUZvbnQuaGVpZ2h0KCk7CiAKICAgICAgICAgLy8gRW5zdXJl
IHRoZSBwb3B1cCBpcyB3aWRlIGVub3VnaCB0byBmaXQgdGhpcyBpdGVtLgpAQCAtMTA4OCw3ICsx
MTAwLDcgQEAgdm9pZCBQb3B1cExpc3RCb3g6OmxheW91dCgpCiAKIHZvaWQgUG9wdXBMaXN0Qm94
OjpjbGVhcigpCiB7Ci0gICAgZm9yIChWZWN0b3I8TGlzdEl0ZW0qPjo6aXRlcmF0b3IgaXQgPSBt
X2l0ZW1zLmJlZ2luKCk7IGl0ICE9IG1faXRlbXMuZW5kKCk7ICsraXQpCisgICAgZm9yIChWZWN0
b3I8UG9wdXBJdGVtKj46Oml0ZXJhdG9yIGl0ID0gbV9pdGVtcy5iZWdpbigpOyBpdCAhPSBtX2l0
ZW1zLmVuZCgpOyArK2l0KQogICAgICAgICBkZWxldGUgKml0OwogICAgIG1faXRlbXMuY2xlYXIo
KTsKIH0KQEAgLTExMTUsMTEgKzExMjcsMTkgQEAgUG9wdXBNZW51Ojp+UG9wdXBNZW51KCkKICAg
ICBoaWRlKCk7CiB9CiAKLXZvaWQgUG9wdXBNZW51OjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEZy
YW1lVmlldyogdiwgaW50IGluZGV4KSAKKy8vIFRoZSBNYWMgQ2hyb21pdW0gaW1wbGVtZW50YXRp
b24gcmVsaWVzIG9uIGV4dGVybmFsIGNvbnRyb2wgKGEgQ29jb2EgY29udHJvbCkKKy8vIHRvIGRp
c3BsYXksIGhhbmRsZSB0aGUgaW5wdXQgdHJhY2tpbmcgYW5kIG1lbnUgaXRlbSBzZWxlY3Rpb24g
Zm9yIHRoZSBwb3B1cC4KKy8vIFdpbmRvd3MgYW5kIExpbnV4IENocm9taXVtIGxldCBvdXIgV2Vi
S2l0IHBvcnQgaGFuZGxlIHRoZSBkaXNwbGF5LCB3aGlsZQorLy8gYW5vdGhlciBwcm9jZXNzIG1h
bmFnZXMgdGhlIHBvcHVwIHdpbmRvdyBhbmQgaW5wdXQgaGFuZGxpbmcuCit2b2lkIFBvcHVwTWVu
dTo6c2hvdyhjb25zdCBJbnRSZWN0JiByLCBGcmFtZVZpZXcqIHYsIGludCBpbmRleCkKIHsKICAg
ICBpZiAoIXAucG9wdXApCiAgICAgICAgIHAucG9wdXAgPSBQb3B1cENvbnRhaW5lcjo6Y3JlYXRl
KGNsaWVudCgpLCBkcm9wRG93blNldHRpbmdzKTsKKyNpZiBQTEFURk9STShEQVJXSU4pCisgICAg
cC5wb3B1cC0+c2hvd0V4dGVybmFsKHIsIHYsIGluZGV4KTsKKyNlbHNlCiAgICAgcC5wb3B1cC0+
c2hvdyhyLCB2LCBpbmRleCk7CisjZW5kaWYKIH0KIAogdm9pZCBQb3B1cE1lbnU6OmhpZGUoKQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAko
cmV2aXNpb24gNDIyMDkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNo
cm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDIzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBGcmFtZVZpZXc7CiAgICAgY2xhc3MgUG9wdXBMaXN0Qm94OwogCisg
ICAgLy8gQSBjb250YWluZXIgZm9yIHRoZSBkYXRhIGZvciBlYWNoIG1lbnUgaXRlbSAoZS5nLiBy
ZXByZXNlbnRlZCBieSA8b3B0aW9uPgorICAgIC8vIG9yIDxvcHRncm91cD4gaW4gYSA8c2VsZWN0
PiB3aWRnZXQpIGFuZCBpcyB1c2VkIGJ5IFBvcHVwTGlzdEJveC4KKyAgICBzdHJ1Y3QgUG9wdXBJ
dGVtIHsKKyAgICAgICAgZW51bSBUeXBlIHsKKyAgICAgICAgICAgIFR5cGVPcHRpb24sCisgICAg
ICAgICAgICBUeXBlR3JvdXAsCisgICAgICAgICAgICBUeXBlU2VwYXJhdG9yCisgICAgICAgIH07
CisKKyAgICAgICAgUG9wdXBJdGVtKGNvbnN0IFN0cmluZyYgbGFiZWwsIFR5cGUgdHlwZSkKKyAg
ICAgICAgICAgIDogbGFiZWwobGFiZWwpLCB0eXBlKHR5cGUpLCB5T2Zmc2V0KDApIHsgfQorICAg
ICAgICBTdHJpbmcgbGFiZWw7CisgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgaW50IHlPZmZz
ZXQ7ICAvLyB5IG9mZnNldCBvZiB0aGlzIGl0ZW0sIHJlbGF0aXZlIHRvIHRoZSB0b3Agb2YgdGhl
IHBvcHVwLgorICAgICAgICBib29sIGVuYWJsZWQ7CisgICAgfTsKKwogICAgIC8vIEZJWE1FOiBP
dXIgRnJhbWVsZXNzU2Nyb2xsVmlldyBjbGFzc2VzIHNob3VsZCBwcm9iYWJseSBpbXBsZW1lbnQg
SG9zdFdpbmRvdyEKIAogICAgIC8vIFRoZSBQb3B1cENvbnRhaW5lciBjbGFzcyBob2xkcyBhIFBv
cHVwTGlzdEJveCAoc2VlIGNwcCBmaWxlKS4gIEl0cyBzb2xlIHB1cnBvc2UgaXMgdG8gYmUKQEAg
LTk0LDkgKzExMSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFNob3cgdGhl
IHBvcHVwCiAgICAgICAgIHZvaWQgc2hvd1BvcHVwKEZyYW1lVmlldyopOwogCisgICAgICAgIC8v
IFVzZWQgb24gTWFjIENocm9taXVtIGZvciBIVE1MIHNlbGVjdCBwb3B1cCBtZW51cy4KKyAgICAg
ICAgdm9pZCBzaG93RXh0ZXJuYWwoY29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyosIGludCBpbmRl
eCk7CisKICAgICAgICAgLy8gU2hvdyB0aGUgcG9wdXAgaW4gdGhlIHNwZWNpZmllZCByZWN0IGZv
ciB0aGUgc3BlY2lmaWVkIGZyYW1lLgogICAgICAgICAvLyBOb3RlOiB0aGlzIGNvZGUgd2FzIHNv
bWVob3cgYXJiaXRyYXJpbHkgZmFjdG9yZWQtb3V0IG9mIHRoZSBQb3B1cCBjbGFzcwotICAgICAg
ICAvLyBzbyBXZWJWaWV3SW1wbCBjYW4gY3JlYXRlIGEgUG9wdXBDb250YWluZXIuCisgICAgICAg
IC8vIHNvIFdlYlZpZXdJbXBsIGNhbiBjcmVhdGUgYSBQb3B1cENvbnRhaW5lci4gVGhpcyBtZXRo
b2QgaXMgdXNlZCBmb3IKKyAgICAgICAgLy8gZGlzcGxheWluZyBhdXRvIGNvbXBsZXRlIHBvcHVw
IG1lbnVzIG9uIE1hYyBDaHJvbWl1bSwgYW5kIGZvciBhbGwKKyAgICAgICAgLy8gcG9wdXBzIG9u
IG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgdm9pZCBzaG93KGNvbnN0IEludFJlY3QmLCBGcmFt
ZVZpZXcqLCBpbnQgaW5kZXgpOwogCiAgICAgICAgIC8vIEhpZGUgdGhlIHBvcHVwLiAgRG8gbm90
IGNhbGwgdGhpcyBkaXJlY3RseTogdXNlIGNsaWVudC0+aGlkZVBvcHVwKCkuCkBAIC0xMTQsNiAr
MTM2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmVmcmVzaCB0aGUgcG9w
dXAgdmFsdWVzIGZyb20gdGhlIFBvcHVwTWVudUNsaWVudC4KICAgICAgICAgdm9pZCByZWZyZXNo
KCk7CiAKKyAgICAgICAgLy8gVGhlIG1lbnUgcGVyLWl0ZW0gZGF0YS4KKyAgICAgICAgY29uc3Qg
V1RGOjpWZWN0b3I8UG9wdXBJdGVtKj4mIHBvcHVwRGF0YSgpIGNvbnN0OworCisgICAgICAgIC8v
IFRoZSBoZWlnaHQgb2YgYSByb3cgaW4gdGhlIG1lbnUuCisgICAgICAgIGludCBtZW51SXRlbUhl
aWdodCgpIGNvbnN0OworCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFdURjo6
UmVmQ291bnRlZDxQb3B1cENvbnRhaW5lcj47CiAK
</data>
<flag name="review"
          id="14511"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29243</attachid>
            <date>2009-04-03 14:37:31 -0700</date>
            <delta_ts>2009-04-06 12:29:23 -0700</delta_ts>
            <desc>Same as previous patch, but with updated ChangeLog</desc>
            <filename>mac_cr_popups7</filename>
            <type>text/plain</type>
            <size>12593</size>
            <attacher name="Paul Godavari">paul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MjIxMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDktMDQtMDMgIFBhdWwgR29kYXZhcmkgIDxwYXVsQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2OTIKKyAgICAgICAgRW5h
YmxlIFBvcHVwTWVudUNocm9taXVtIHRvIGhhbmRsZSBIVE1MIHNlbGVjdCBwb3B1cHMgdXNpbmcg
bmF0aXZlCisgICAgICAgIGNvY29hIGNvbnRyb2xzIG9uIHRoZSBNYWMsIGFsbCBvdGhlciBwbGF0
Zm9ybXMgYXJlIHVuY2hhbmdlZC4KKworICAgICAgICBXZSBhbHNvIHNwbGl0IG91dCB0aGUgc3Rv
cmFnZSBjb250YWluZXIgZm9yIHRoZSBwb3B1cCBtZW51IGl0ZW1zCisgICAgICAgIHNvIHRoYXQg
Q2hyb21lQ2xpZW50Q2hyb21pdW0gY2FuIGFjY2VzcyB0aGVtIGZvciBmb3J3YXJkaW5nIHRvCisg
ICAgICAgIHRoZSBlbWJlZGRpbmcgaG9zdCAoQ2hyb21pdW0uYXBwIG9yIHRlc3Rfc2hlbGwpLgor
CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBvcHVwTGlzdEJveDo6aXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250
YWluZXI6OlBvcHVwQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVy
Ojp+UG9wdXBDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250YWluZXI6OnNo
b3dQb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6c2hvd0V4dGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjptZW51SXRlbUhlaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpwb3B1cERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0
Qm94Ojpwb2ludFRvUm93SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94Ojpn
ZXRSb3dCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94Ojppc1NlbGVjdGFi
bGVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6dXBkYXRlRnJvbUVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpsYXlvdXQpOgorICAgICAgICAo
V2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1l
bnU6OnNob3cpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVt
Lmg6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cEl0ZW06Oik6CisgICAgICAgIChXZWJDb3JlOjpQ
b3B1cEl0ZW06OlBvcHVwSXRlbSk6CisKIDIwMDktMDQtMDMgIERhbiBCZXJuc3RlaW4gIDxtaXR6
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4OiBX
ZWJDb3JlL3BhZ2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaAkocmV2aXNpb24g
NDIyMDkpCisrKyBXZWJDb3JlL3BhZ2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaAko
d29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsOCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBGcmFtZWxlc3NTY3JvbGxWaWV3Owog
ICAgIGNsYXNzIEludFJlY3Q7CisgICAgY2xhc3MgUG9wdXBDb250YWluZXI7CiAKICAgICAvLyBD
b250YWlucyBDaHJvbWl1bS1zcGVjaWZpYyBleHRlbnNpb25zIHRvIHRoZSBDaHJvbWVDbGllbnQu
ICBPbmx5IHB1dAogICAgIC8vIHRoaW5ncyBoZXJlIHRoYXQgZG9uJ3QgbWFrZSBzZW5zZSBmb3Ig
b3RoZXIgcG9ydHMuCkBAIC00NCw3ICs0NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
cHVibGljOgogICAgICAgICAvLyBOb3RpZmllcyB0aGUgY2xpZW50IG9mIGEgbmV3IHBvcHVwIHdp
ZGdldC4gIFRoZSBjbGllbnQgc2hvdWxkIHBsYWNlCiAgICAgICAgIC8vIGFuZCBzaXplIHRoZSB3
aWRnZXQgd2l0aCB0aGUgZ2l2ZW4gYm91bmRzLCByZWxhdGl2ZSB0byB0aGUgc2NyZWVuLgotICAg
ICAgICB2aXJ0dWFsIHZvaWQgcG9wdXBPcGVuZWQoRnJhbWVsZXNzU2Nyb2xsVmlldyogcG9wdXBW
aWV3LCBjb25zdCBJbnRSZWN0JiBib3VuZHMsIGJvb2wgZm9jdXNPblNob3cpID0gMDsKKyAgICAg
ICAgLy8gSWYgaGFuZGxlRXh0ZXJuYWwgaXMgdHJ1ZSwgdGhlbiBkcmF3aW5nIGFuZCBpbnB1dCBo
YW5kbGluZyBmb3IgdGhlCisgICAgICAgIC8vIHBvcHVwIHdpbGwgYmUgaGFuZGxlZCBieSB0aGUg
ZXh0ZXJuYWwgZW1iZWRkZXIuCisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3B1cE9wZW5lZChQb3B1
cENvbnRhaW5lciogcG9wdXBDb250YWluZXIsIGNvbnN0IEludFJlY3QmIGJvdW5kcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZm9jdXNPblNob3csIGJvb2wgaGFuZGxl
RXh0ZXJuYWwpID0gMDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAkocmV2
aXNpb24gNDIyMDkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9t
aXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDI2ICsxMzYsMTkgQEAgcHVibGljOgogICAg
IC8vIFJldHVybnMgd2hldGhlciB0aGUgcG9wdXAgd2FudHMgdG8gcHJvY2VzcyBldmVudHMgZm9y
IHRoZSBwYXNzZWQga2V5LgogICAgIGJvb2wgaXNJbnRlcmVzdGVkSW5FdmVudEZvcktleShpbnQg
a2V5Q29kZSk7CiAKKyAgICAvLyBHZXRzIHRoZSBoZWlnaHQgb2YgYSByb3cuCisgICAgaW50IGdl
dFJvd0hlaWdodChpbnQgaW5kZXgpOworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzZWxl
Y3Rpb24gY2FuIGJlIGNoYW5nZWQgdG8gaW5kZXguCisgICAgLy8gRGlzYWJsZWQgaXRlbXMsIG9y
IGxhYmVscyBjYW5ub3QgYmUgc2VsZWN0ZWQuCisgICAgYm9vbCBpc1NlbGVjdGFibGVJdGVtKGlu
dCBpbmRleCk7CisKKyAgICBjb25zdCBWZWN0b3I8UG9wdXBJdGVtKj4mIGl0ZW1zKCkgY29uc3Qg
eyByZXR1cm4gbV9pdGVtczsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQb3B1cENv
bnRhaW5lcjsKICAgICBmcmllbmQgY2xhc3MgUmVmQ291bnRlZDxQb3B1cExpc3RCb3g+OwogCi0g
ICAgLy8gQSB0eXBlIG9mIExpc3QgSXRlbQotICAgIGVudW0gTGlzdEl0ZW1UeXBlIHsKLSAgICAg
ICAgVHlwZU9wdGlvbiwKLSAgICAgICAgVHlwZUdyb3VwLAotICAgICAgICBUeXBlU2VwYXJhdG9y
Ci0gICAgfTsKLQotICAgIC8vIEEgaXRlbSAocmVwcmVzZW50ZWQgYnkgPG9wdGlvbj4gb3IgPG9w
dGdyb3VwPikgaW4gdGhlIDxzZWxlY3Q+IHdpZGdldC4gCi0gICAgc3RydWN0IExpc3RJdGVtIHsK
LSAgICAgICAgTGlzdEl0ZW0oY29uc3QgU3RyaW5nJiBsYWJlbCwgTGlzdEl0ZW1UeXBlIHR5cGUp
Ci0gICAgICAgICAgICA6IGxhYmVsKGxhYmVsLmNvcHkoKSksIHR5cGUodHlwZSksIHkoMCkge30K
LSAgICAgICAgU3RyaW5nIGxhYmVsOwotICAgICAgICBMaXN0SXRlbVR5cGUgdHlwZTsKLSAgICAg
ICAgaW50IHk7ICAvLyB5IG9mZnNldCBvZiB0aGlzIGl0ZW0sIHJlbGF0aXZlIHRvIHRoZSB0b3Ag
b2YgdGhlIHBvcHVwLgotICAgIH07Ci0KICAgICBQb3B1cExpc3RCb3goUG9wdXBNZW51Q2xpZW50
KiBjbGllbnQsIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MmIHNldHRpbmdzKQogICAgICAg
ICA6IG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgICAgICwgbV9vcmlnaW5hbEluZGV4KDApCkBA
IC0xODQsMTAgKzE3Nyw2IEBAIHByaXZhdGU6CiAgICAgLy8gdGhlIHdlYiBwYWdlLCBhbmQgY2xv
c2VzIHRoZSBwb3B1cC4KICAgICB2b2lkIGFjY2VwdEluZGV4KGludCBpbmRleCk7CiAKLSAgICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIHNlbGVjdGlvbiBjYW4gYmUgY2hhbmdlZCB0byBpbmRleC4K
LSAgICAvLyBEaXNhYmxlZCBpdGVtcywgb3IgbGFiZWxzIGNhbm5vdCBiZSBzZWxlY3RlZC4KLSAg
ICBib29sIGlzU2VsZWN0YWJsZUl0ZW0oaW50IGluZGV4KTsKLQogICAgIC8vIENsZWFycyB0aGUg
c2VsZWN0aW9uIChzbyBubyByb3cgYXBwZWFycyBzZWxlY3RlZCkuCiAgICAgdm9pZCBjbGVhclNl
bGVjdGlvbigpOwogCkBAIC0xOTgsOCArMTg3LDYgQEAgcHJpdmF0ZToKICAgICAvLyBJbnZhbGlk
YXRlcyB0aGUgcm93IGF0IHRoZSBnaXZlbiBpbmRleC4gCiAgICAgdm9pZCBpbnZhbGlkYXRlUm93
KGludCBpbmRleCk7CiAKLSAgICAvLyBHZXRzIHRoZSBoZWlnaHQgb2YgYSByb3cuCi0gICAgaW50
IGdldFJvd0hlaWdodChpbnQgaW5kZXgpOwogICAgIC8vIEdldCB0aGUgYm91bmRzIG9mIGEgcm93
LiAKICAgICBJbnRSZWN0IGdldFJvd0JvdW5kcyhpbnQgaW5kZXgpOwogCkBAIC0yNTAsNyArMjM3
LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9iYXNlV2lkdGg7CiAKICAgICAvLyBBIGxpc3Qgb2Yg
dGhlIG9wdGlvbnMgY29udGFpbmVkIHdpdGhpbiB0aGUgPHNlbGVjdD4KLSAgICBWZWN0b3I8TGlz
dEl0ZW0qPiBtX2l0ZW1zOworICAgIFZlY3RvcjxQb3B1cEl0ZW0qPiBtX2l0ZW1zOwogCiAgICAg
Ly8gVGhlIDxzZWxlY3Q+IFBvcHVwTWVudUNsaWVudCB0aGF0IG9wZW5lZCB1cy4KICAgICBQb3B1
cE1lbnVDbGllbnQqIG1fcG9wdXBDbGllbnQ7CkBAIC0zMTAsNyArMjk3LDggQEAgUGFzc1JlZlB0
cjxQb3B1cENvbnRhaW5lcj4gUG9wdXBDb250YWluZQogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UG9wdXBDb250YWluZXIoY2xpZW50LCBzZXR0aW5ncykpOwogfQogCi1Qb3B1cENvbnRhaW5lcjo6
UG9wdXBDb250YWluZXIoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGNvbnN0IFBvcHVwQ29udGFp
bmVyU2V0dGluZ3MmIHNldHRpbmdzKQorUG9wdXBDb250YWluZXI6OlBvcHVwQ29udGFpbmVyKFBv
cHVwTWVudUNsaWVudCogY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MmIHNldHRpbmdzKQogICAgIDogbV9saXN0Qm94KFBv
cHVwTGlzdEJveDo6Y3JlYXRlKGNsaWVudCwgc2V0dGluZ3MpKQogICAgICwgbV9zZXR0aW5ncyhz
ZXR0aW5ncykKIHsKQEAgLTMxOSw3ICszMDcsNyBAQCBQb3B1cENvbnRhaW5lcjo6UG9wdXBDb250
YWluZXIoUG9wdXBNZW51CiAKIFBvcHVwQ29udGFpbmVyOjp+UG9wdXBDb250YWluZXIoKQogewot
ICAgIGlmIChtX2xpc3RCb3gpCisgICAgaWYgKG1fbGlzdEJveCAmJiBtX2xpc3RCb3gtPnBhcmVu
dCgpKQogICAgICAgICByZW1vdmVDaGlsZChtX2xpc3RCb3guZ2V0KCkpOwogfQogCkBAIC0zNDIs
NyArMzMwLDcgQEAgdm9pZCBQb3B1cENvbnRhaW5lcjo6c2hvd1BvcHVwKEZyYW1lVmlldwogICAg
ICAgICBpZiAod2lkZ2V0UmVjdC5ib3R0b20oKSA+IHN0YXRpY19jYXN0PGludD4oc2NyZWVuLmJv
dHRvbSgpKSkKICAgICAgICAgICAgIHdpZGdldFJlY3QubW92ZSgwLCAtKHdpZGdldFJlY3QuaGVp
Z2h0KCkgKyBzZWxlY3RIZWlnaHQpKTsKIAotICAgICAgICBjaHJvbWVDbGllbnQtPnBvcHVwT3Bl
bmVkKHRoaXMsIHdpZGdldFJlY3QsIG1fc2V0dGluZ3MuZm9jdXNPblNob3cpOworICAgICAgICBj
aHJvbWVDbGllbnQtPnBvcHVwT3BlbmVkKHRoaXMsIHdpZGdldFJlY3QsIG1fc2V0dGluZ3MuZm9j
dXNPblNob3csIGZhbHNlKTsKICAgICB9CiAKICAgICBpZiAoIW1fbGlzdEJveC0+cGFyZW50KCkp
CkBAIC0zNTcsNiArMzQ1LDE5IEBAIHZvaWQgUG9wdXBDb250YWluZXI6OnNob3dQb3B1cChGcmFt
ZVZpZXcKICAgICBpbnZhbGlkYXRlKCk7CiB9CiAKK3ZvaWQgUG9wdXBDb250YWluZXI6OnNob3dF
eHRlcm5hbChjb25zdCBJbnRSZWN0JiByZWN0LCBGcmFtZVZpZXcqIHYsIGludCBpbmRleCkKK3sK
KyAgICAgaWYgKCFsaXN0Qm94KCkpCisgICAgICAgIHJldHVybjsKKworICAgICBsaXN0Qm94KCkt
PnVwZGF0ZUZyb21FbGVtZW50KCk7CisKKyAgICAgLy8gR2V0IHRoZSBDaHJvbWVDbGllbnQgYW5k
IHBhc3MgaXQgdGhlIHBvcHVwIG1lbnUncyBsaXN0Ym94IGRhdGEuCisgICAgIENocm9tZUNsaWVu
dENocm9taXVtKiBjbGllbnQgPSBzdGF0aWNfY2FzdDxDaHJvbWVDbGllbnRDaHJvbWl1bSo+KAor
ICAgICAgICAgIHYtPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpKTsKKyAgICAg
Y2xpZW50LT5wb3B1cE9wZW5lZCh0aGlzLCByZWN0LCB0cnVlLCB0cnVlKTsKK30KKwogdm9pZCBQ
b3B1cENvbnRhaW5lcjo6aGlkZVBvcHVwKCkKIHsKICAgICBpZiAoY2xpZW50KCkpCkBAIC00ODUs
NiArNDg2LDE2IEBAIGludCBQb3B1cENvbnRhaW5lcjo6c2VsZWN0ZWRJbmRleCgpIGNvbnMKICAg
ICByZXR1cm4gbV9saXN0Qm94LT5zZWxlY3RlZEluZGV4KCk7CiB9CiAKK2ludCBQb3B1cENvbnRh
aW5lcjo6bWVudUl0ZW1IZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBtX2xpc3RCb3gtPmdl
dFJvd0hlaWdodCgwKTsKK30KKworY29uc3QgV1RGOjpWZWN0b3I8UG9wdXBJdGVtKj4mIFBvcHVw
Q29udGFpbmVyOjogcG9wdXBEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9saXN0Qm94LT5p
dGVtcygpOworfQorCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyBQb3B1cExpc3RCb3ggaW1w
bGVtZW50YXRpb24KIApAQCAtODI4LDcgKzgzOSw3IEBAIGludCBQb3B1cExpc3RCb3g6OnBvaW50
VG9Sb3dJbmRleChjb25zdCAKIAogICAgIC8vIEZJWE1FOiBiaW5hcnkgc2VhcmNoIGlmIHBlcmYg
bWF0dGVycy4KICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUl0ZW1zKCk7ICsraSkgewotICAg
ICAgICBpZiAoeSA8IG1faXRlbXNbaV0tPnkpCisgICAgICAgIGlmICh5IDwgbV9pdGVtc1tpXS0+
eU9mZnNldCkKICAgICAgICAgICAgIHJldHVybiBpLTE7CiAgICAgfQogCkBAIC04OTAsNyArOTAx
LDcgQEAgSW50UmVjdCBQb3B1cExpc3RCb3g6OmdldFJvd0JvdW5kcyhpbnQgaQogICAgIGlmIChp
bmRleCA8IDApCiAgICAgICAgIHJldHVybiBJbnRSZWN0KDAsIDAsIHZpc2libGVXaWR0aCgpLCBn
ZXRSb3dIZWlnaHQoaW5kZXgpKTsKIAotICAgIHJldHVybiBJbnRSZWN0KDAsIG1faXRlbXNbaW5k
ZXhdLT55LCB2aXNpYmxlV2lkdGgoKSwgZ2V0Um93SGVpZ2h0KGluZGV4KSk7CisgICAgcmV0dXJu
IEludFJlY3QoMCwgbV9pdGVtc1tpbmRleF0tPnlPZmZzZXQsIHZpc2libGVXaWR0aCgpLCBnZXRS
b3dIZWlnaHQoaW5kZXgpKTsKIH0KIAogdm9pZCBQb3B1cExpc3RCb3g6OmludmFsaWRhdGVSb3co
aW50IGluZGV4KQpAQCAtOTIxLDcgKzkzMiw3IEBAIHZvaWQgUG9wdXBMaXN0Qm94OjpzY3JvbGxU
b1JldmVhbFJvdyhpbnQKIAogYm9vbCBQb3B1cExpc3RCb3g6OmlzU2VsZWN0YWJsZUl0ZW0oaW50
IGluZGV4KQogewotICAgIHJldHVybiBtX2l0ZW1zW2luZGV4XS0+dHlwZSA9PSBUeXBlT3B0aW9u
ICYmIG1fcG9wdXBDbGllbnQtPml0ZW1Jc0VuYWJsZWQoaW5kZXgpOworICAgIHJldHVybiBtX2l0
ZW1zW2luZGV4XS0+dHlwZSA9PSBQb3B1cEl0ZW06OlR5cGVPcHRpb24gJiYgbV9wb3B1cENsaWVu
dC0+aXRlbUlzRW5hYmxlZChpbmRleCk7CiB9CiAKIHZvaWQgUG9wdXBMaXN0Qm94OjpjbGVhclNl
bGVjdGlvbigpCkBAIC0xMDEwLDE0ICsxMDIxLDE1IEBAIHZvaWQgUG9wdXBMaXN0Qm94Ojp1cGRh
dGVGcm9tRWxlbWVudCgpCiAKICAgICBpbnQgc2l6ZSA9IG1fcG9wdXBDbGllbnQtPmxpc3RTaXpl
KCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgTGlzdEl0
ZW1UeXBlIHR5cGU7CisgICAgICAgIFBvcHVwSXRlbTo6VHlwZSB0eXBlOwogICAgICAgICBpZiAo
bV9wb3B1cENsaWVudC0+aXRlbUlzU2VwYXJhdG9yKGkpKQotICAgICAgICAgICAgdHlwZSA9IFBv
cHVwTGlzdEJveDo6VHlwZVNlcGFyYXRvcjsKKyAgICAgICAgICAgIHR5cGUgPSBQb3B1cEl0ZW06
OlR5cGVTZXBhcmF0b3I7CiAgICAgICAgIGVsc2UgaWYgKG1fcG9wdXBDbGllbnQtPml0ZW1Jc0xh
YmVsKGkpKQotICAgICAgICAgICAgdHlwZSA9IFBvcHVwTGlzdEJveDo6VHlwZUdyb3VwOworICAg
ICAgICAgICAgdHlwZSA9IFBvcHVwSXRlbTo6VHlwZUdyb3VwOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB0eXBlID0gUG9wdXBMaXN0Qm94OjpUeXBlT3B0aW9uOwotICAgICAgICBtX2l0ZW1z
LmFwcGVuZChuZXcgTGlzdEl0ZW0obV9wb3B1cENsaWVudC0+aXRlbVRleHQoaSksIHR5cGUpKTsK
KyAgICAgICAgICAgIHR5cGUgPSBQb3B1cEl0ZW06OlR5cGVPcHRpb247CisgICAgICAgIG1faXRl
bXMuYXBwZW5kKG5ldyBQb3B1cEl0ZW0obV9wb3B1cENsaWVudC0+aXRlbVRleHQoaSksIHR5cGUp
KTsKKyAgICAgICAgbV9pdGVtc1tpXS0+ZW5hYmxlZCA9IGlzU2VsZWN0YWJsZUl0ZW0oaSk7CiAg
ICAgfQogCiAgICAgbV9zZWxlY3RlZEluZGV4ID0gbV9wb3B1cENsaWVudC0+c2VsZWN0ZWRJbmRl
eCgpOwpAQCAtMTAzNiw3ICsxMDQ4LDcgQEAgdm9pZCBQb3B1cExpc3RCb3g6OmxheW91dCgpCiAg
ICAgICAgIEZvbnQgaXRlbUZvbnQgPSBnZXRSb3dGb250KGkpOwogCiAgICAgICAgIC8vIFBsYWNl
IHRoZSBpdGVtIHZlcnRpY2FsbHkuCi0gICAgICAgIG1faXRlbXNbaV0tPnkgPSB5OworICAgICAg
ICBtX2l0ZW1zW2ldLT55T2Zmc2V0ID0geTsKICAgICAgICAgeSArPSBpdGVtRm9udC5oZWlnaHQo
KTsKIAogICAgICAgICAvLyBFbnN1cmUgdGhlIHBvcHVwIGlzIHdpZGUgZW5vdWdoIHRvIGZpdCB0
aGlzIGl0ZW0uCkBAIC0xMDg4LDcgKzExMDAsNyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6bGF5b3V0
KCkKIAogdm9pZCBQb3B1cExpc3RCb3g6OmNsZWFyKCkKIHsKLSAgICBmb3IgKFZlY3RvcjxMaXN0
SXRlbSo+OjppdGVyYXRvciBpdCA9IG1faXRlbXMuYmVnaW4oKTsgaXQgIT0gbV9pdGVtcy5lbmQo
KTsgKytpdCkKKyAgICBmb3IgKFZlY3RvcjxQb3B1cEl0ZW0qPjo6aXRlcmF0b3IgaXQgPSBtX2l0
ZW1zLmJlZ2luKCk7IGl0ICE9IG1faXRlbXMuZW5kKCk7ICsraXQpCiAgICAgICAgIGRlbGV0ZSAq
aXQ7CiAgICAgbV9pdGVtcy5jbGVhcigpOwogfQpAQCAtMTExNSwxMSArMTEyNywxOSBAQCBQb3B1
cE1lbnU6On5Qb3B1cE1lbnUoKQogICAgIGhpZGUoKTsKIH0KIAotdm9pZCBQb3B1cE1lbnU6OnNo
b3coY29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2LCBpbnQgaW5kZXgpIAorLy8gVGhlIE1h
YyBDaHJvbWl1bSBpbXBsZW1lbnRhdGlvbiByZWxpZXMgb24gZXh0ZXJuYWwgY29udHJvbCAoYSBD
b2NvYSBjb250cm9sKQorLy8gdG8gZGlzcGxheSwgaGFuZGxlIHRoZSBpbnB1dCB0cmFja2luZyBh
bmQgbWVudSBpdGVtIHNlbGVjdGlvbiBmb3IgdGhlIHBvcHVwLgorLy8gV2luZG93cyBhbmQgTGlu
dXggQ2hyb21pdW0gbGV0IG91ciBXZWJLaXQgcG9ydCBoYW5kbGUgdGhlIGRpc3BsYXksIHdoaWxl
CisvLyBhbm90aGVyIHByb2Nlc3MgbWFuYWdlcyB0aGUgcG9wdXAgd2luZG93IGFuZCBpbnB1dCBo
YW5kbGluZy4KK3ZvaWQgUG9wdXBNZW51OjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEZyYW1lVmll
dyogdiwgaW50IGluZGV4KQogewogICAgIGlmICghcC5wb3B1cCkKICAgICAgICAgcC5wb3B1cCA9
IFBvcHVwQ29udGFpbmVyOjpjcmVhdGUoY2xpZW50KCksIGRyb3BEb3duU2V0dGluZ3MpOworI2lm
IFBMQVRGT1JNKERBUldJTikKKyAgICBwLnBvcHVwLT5zaG93RXh0ZXJuYWwociwgdiwgaW5kZXgp
OworI2Vsc2UKICAgICBwLnBvcHVwLT5zaG93KHIsIHYsIGluZGV4KTsKKyNlbmRpZgogfQogCiB2
b2lkIFBvcHVwTWVudTo6aGlkZSgpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bv
cHVwTWVudUNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cE1lbnVDaHJvbWl1bS5oCShyZXZpc2lvbiA0MjIwOSkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZyYW1lVmlldzsKICAgICBj
bGFzcyBQb3B1cExpc3RCb3g7CiAKKyAgICAvLyBBIGNvbnRhaW5lciBmb3IgdGhlIGRhdGEgZm9y
IGVhY2ggbWVudSBpdGVtIChlLmcuIHJlcHJlc2VudGVkIGJ5IDxvcHRpb24+CisgICAgLy8gb3Ig
PG9wdGdyb3VwPiBpbiBhIDxzZWxlY3Q+IHdpZGdldCkgYW5kIGlzIHVzZWQgYnkgUG9wdXBMaXN0
Qm94LgorICAgIHN0cnVjdCBQb3B1cEl0ZW0geworICAgICAgICBlbnVtIFR5cGUgeworICAgICAg
ICAgICAgVHlwZU9wdGlvbiwKKyAgICAgICAgICAgIFR5cGVHcm91cCwKKyAgICAgICAgICAgIFR5
cGVTZXBhcmF0b3IKKyAgICAgICAgfTsKKworICAgICAgICBQb3B1cEl0ZW0oY29uc3QgU3RyaW5n
JiBsYWJlbCwgVHlwZSB0eXBlKQorICAgICAgICAgICAgOiBsYWJlbChsYWJlbCksIHR5cGUodHlw
ZSksIHlPZmZzZXQoMCkgeyB9CisgICAgICAgIFN0cmluZyBsYWJlbDsKKyAgICAgICAgVHlwZSB0
eXBlOworICAgICAgICBpbnQgeU9mZnNldDsgIC8vIHkgb2Zmc2V0IG9mIHRoaXMgaXRlbSwgcmVs
YXRpdmUgdG8gdGhlIHRvcCBvZiB0aGUgcG9wdXAuCisgICAgICAgIGJvb2wgZW5hYmxlZDsKKyAg
ICB9OworCiAgICAgLy8gRklYTUU6IE91ciBGcmFtZWxlc3NTY3JvbGxWaWV3IGNsYXNzZXMgc2hv
dWxkIHByb2JhYmx5IGltcGxlbWVudCBIb3N0V2luZG93IQogCiAgICAgLy8gVGhlIFBvcHVwQ29u
dGFpbmVyIGNsYXNzIGhvbGRzIGEgUG9wdXBMaXN0Qm94IChzZWUgY3BwIGZpbGUpLiAgSXRzIHNv
bGUgcHVycG9zZSBpcyB0byBiZQpAQCAtOTQsOSArMTExLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgLy8gU2hvdyB0aGUgcG9wdXAKICAgICAgICAgdm9pZCBzaG93UG9wdXAoRnJh
bWVWaWV3Kik7CiAKKyAgICAgICAgLy8gVXNlZCBvbiBNYWMgQ2hyb21pdW0gZm9yIEhUTUwgc2Vs
ZWN0IHBvcHVwIG1lbnVzLgorICAgICAgICB2b2lkIHNob3dFeHRlcm5hbChjb25zdCBJbnRSZWN0
JiwgRnJhbWVWaWV3KiwgaW50IGluZGV4KTsKKwogICAgICAgICAvLyBTaG93IHRoZSBwb3B1cCBp
biB0aGUgc3BlY2lmaWVkIHJlY3QgZm9yIHRoZSBzcGVjaWZpZWQgZnJhbWUuCiAgICAgICAgIC8v
IE5vdGU6IHRoaXMgY29kZSB3YXMgc29tZWhvdyBhcmJpdHJhcmlseSBmYWN0b3JlZC1vdXQgb2Yg
dGhlIFBvcHVwIGNsYXNzCi0gICAgICAgIC8vIHNvIFdlYlZpZXdJbXBsIGNhbiBjcmVhdGUgYSBQ
b3B1cENvbnRhaW5lci4KKyAgICAgICAgLy8gc28gV2ViVmlld0ltcGwgY2FuIGNyZWF0ZSBhIFBv
cHVwQ29udGFpbmVyLiBUaGlzIG1ldGhvZCBpcyB1c2VkIGZvcgorICAgICAgICAvLyBkaXNwbGF5
aW5nIGF1dG8gY29tcGxldGUgcG9wdXAgbWVudXMgb24gTWFjIENocm9taXVtLCBhbmQgZm9yIGFs
bAorICAgICAgICAvLyBwb3B1cHMgb24gb3RoZXIgcGxhdGZvcm1zLgogICAgICAgICB2b2lkIHNo
b3coY29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyosIGludCBpbmRleCk7CiAKICAgICAgICAgLy8g
SGlkZSB0aGUgcG9wdXAuICBEbyBub3QgY2FsbCB0aGlzIGRpcmVjdGx5OiB1c2UgY2xpZW50LT5o
aWRlUG9wdXAoKS4KQEAgLTExNCw2ICsxMzYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAvLyBSZWZyZXNoIHRoZSBwb3B1cCB2YWx1ZXMgZnJvbSB0aGUgUG9wdXBNZW51Q2xpZW50
LgogICAgICAgICB2b2lkIHJlZnJlc2goKTsKIAorICAgICAgICAvLyBUaGUgbWVudSBwZXItaXRl
bSBkYXRhLgorICAgICAgICBjb25zdCBXVEY6OlZlY3RvcjxQb3B1cEl0ZW0qPiYgcG9wdXBEYXRh
KCkgY29uc3Q7CisKKyAgICAgICAgLy8gVGhlIGhlaWdodCBvZiBhIHJvdyBpbiB0aGUgbWVudS4K
KyAgICAgICAgaW50IG1lbnVJdGVtSGVpZ2h0KCkgY29uc3Q7CisKICAgICBwcml2YXRlOgogICAg
ICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFBvcHVwQ29udGFpbmVyPjsKIAo=
</data>
<flag name="review"
          id="14512"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>