--- reviewboard/diffviewer/diffutils.py	(revision 1360)
+++ reviewboard/diffviewer/diffutils.py	(working copy)
@@ -92,17 +92,24 @@ def patch(diff, file, filename):
     f.write(convert_line_endings(file))
     f.close()
 
+    diff = convert_line_endings(diff)
+
     # XXX: catch exception if Popen fails?
     newfile = '%s-new' % oldfile
     p = subprocess.Popen(['patch', '-o', newfile, oldfile],
                          stdin=subprocess.PIPE, stdout=subprocess.PIPE,
                          stderr=subprocess.STDOUT)
-    p.stdin.write(convert_line_endings(diff))
+    p.stdin.write(diff)
     p.stdin.close()
     patch_output = p.stdout.read()
     failure = p.wait()
 
     if failure:
+        f = open("%s.diff" %
+                 (os.path.join(tempdir, os.path.basename(filename))), "w")
+        f.write(diff)
+        f.close()
+
         # FIXME: This doesn't provide any useful error report on why the patch
         # failed to apply, which makes it hard to debug.  We might also want to
         # have it clean up if DEBUG=False
@@ -189,25 +196,37 @@ def convert_to_utf8(s, enc):
 
 
 def get_original_file(filediff):
-    """Get a file either from the cache or the SCM.  SCM exceptions are
-       passed back to the caller."""
+    """
+    Get a file either from the cache or the SCM, applying the parent diff if
+    it exists.
 
-    tool = filediff.diffset.repository.get_scmtool()
-    file = filediff.source_file
-    revision = filediff.source_revision
+    SCM exceptions are passed back to the caller.
+    """
+    data = ""
 
-    key = "%s:%s:%s" % (filediff.diffset.repository.path, urlquote(file),
-                        revision)
+    if filediff.source_revision != scmtools.PRE_CREATION:
+        tool = filediff.diffset.repository.get_scmtool()
+        file = filediff.source_file
+        revision = filediff.source_revision
 
-    # We wrap the result of get_file in a list and then return the first
-    # element after getting the result from the cache. This prevents the
-    # cache backend from converting to unicode, since we're no longer
-    # passing in a string and the cache backend doesn't recursively look
-    # through the list in order to convert the elements inside.
-    #
-    # Basically, this fixes the massive regressions introduced by the Django
-    # unicode changes.
-    return cache_memoize(key, lambda: [tool.get_file(file, revision)])[0]
+        key = "%s:%s:%s" % (filediff.diffset.repository.path, urlquote(file),
+                            revision)
+
+        # We wrap the result of get_file in a list and then return the first
+        # element after getting the result from the cache. This prevents the
+        # cache backend from converting to unicode, since we're no longer
+        # passing in a string and the cache backend doesn't recursively look
+        # through the list in order to convert the elements inside.
+        #
+        # Basically, this fixes the massive regressions introduced by the
+        # Django unicode changes.
+        data = cache_memoize(key, lambda: [tool.get_file(file, revision)])[0]
+
+    # If there's a parent diff set, apply it to the buffer.
+    if filediff.parent_diff:
+        data = patch(filediff.parent_diff, data, filediff.source_file)
+
+    return data
 
 
 def get_patched_file(buffer, filediff):
@@ -293,21 +312,13 @@ def get_chunks(diffset, filediff, interfilediff, force_interdiff,
 
     file = filediff.source_file
     revision = filediff.source_revision
-    old = ""
-
-    if revision != scmtools.PRE_CREATION:
-        old = get_original_file(filediff)
 
+    old = get_original_file(filediff)
     new = get_patched_file(old, filediff)
 
     if interfilediff:
         old = new
-
-        if interfilediff.source_revision != scmtools.PRE_CREATION:
-            interdiff_orig = get_original_file(interfilediff)
-        else:
-            interdiff_orig = ""
-
+        interdiff_orig = get_original_file(interfilediff)
         new = get_patched_file(interdiff_orig, interfilediff)
     elif force_interdiff:
         # Basically, revert the change.
Index: reviewboard/diffviewer/evolutions/__init__.py
===============================================================
new file mode 100644
--- reviewboard/diffviewer/evolutions/__init__.py	(revision 0)
+++ reviewboard/diffviewer/evolutions/__init__.py	(revision 0)
@@ -0,0 +1 @@
+SEQUENCE = ['add_parent_diffs']
Index: reviewboard/diffviewer/evolutions/add_parent_diffs.py
===============================================================
new file mode 100644
--- reviewboard/diffviewer/evolutions/add_parent_diffs.py	(revision 0)
+++ reviewboard/diffviewer/evolutions/add_parent_diffs.py	(revision 0)
@@ -0,0 +1,13 @@
+from django_evolution.mutations import *
+from django.db import models
+
+from djblets.util.fields import Base64Field
+from djblets.util.dbevolution import FakeChangeFieldType
+
+
+MUTATIONS = [
+    FakeChangeFieldType('FileDiff', 'diff_base64', Base64Field),
+    RenameField('FileDiff', 'diff_base64', 'diff', db_column='diff_base64'),
+    AddField('FileDiff', 'parent_diff', Base64Field, initial="", db_column='parent_diff_base64'),
+]
+
Index: reviewboard/diffviewer/forms.py
===============================================================
--- reviewboard/diffviewer/forms.py	(revision 1360)
+++ reviewboard/diffviewer/forms.py	(working copy)
@@ -15,7 +15,10 @@ class EmptyDiffError(ValueError):
 
 class UploadDiffForm(forms.Form):
     basedir = forms.CharField(label=_("Base directory"))
-    path = forms.CharField(label=_("Diff path"), widget=forms.FileInput())
+    path = forms.CharField(label=_("Diff"), widget=forms.FileInput())
+    parent_diff_path = forms.CharField(label=_("Parent diff (optional)"),
+                                       widget=forms.FileInput(),
+                                       required=False)
 
     # Extensions used for intelligent sorting of header files
     # before implementation files.
@@ -31,56 +34,85 @@ class UploadDiffForm(forms.Form):
             # the user for the base directory.
             del(self.fields['basedir'])
 
-    def create(self, file, diffset_history=None):
-        # Parse the diff
+    def create(self, diff_file, parent_diff_file=None, diffset_history=None):
         tool = self.repository.get_scmtool()
-        files = tool.get_parser(file["content"]).parse()
+
+        # Grab the base directory if there is one.
+        if not tool.get_diffs_use_absolute_paths():
+            basedir = smart_unicode(self.cleaned_data['basedir'])
+        else:
+            basedir = ''
+
+        # Parse the diff
+        files = list(self._process_files(
+            diff_file, basedir, check_existance=(parent_diff_file is not None)))
 
         if len(files) == 0:
             raise EmptyDiffError(_("The diff file is empty"))
 
-        # Check that we can actually get all these files.
-        if tool.get_diffs_use_absolute_paths():
-            basedir = ''
-        else:
-            basedir = smart_unicode(self.cleaned_data['basedir'])
-
-        for f in files:
-            f2, revision = tool.parse_diff_revision(f.origFile, f.origInfo)
-            if f2.startswith("/"):
-                filename = f2
-            else:
-                filename = os.path.join(basedir, f2).replace("\\", "/")
+        # Sort the files so that header files come before implementation.
+        files.sort(cmp=self._compare_files, key=lambda f: f.origFile)
 
-            # FIXME: this would be a good place to find permissions errors
-            if revision != PRE_CREATION and revision != UNKNOWN and \
-               not tool.file_exists(filename, revision):
-                raise scmtools.FileNotFoundError(filename, revision)
+        # Parse the parent diff
+        parent_files = {}
 
-            f.origFile = filename
-            f.origInfo = revision
+        if parent_diff_file:
+            # If the user supplied a base diff, we need to parse it and
+            # later apply each of the files that are in the main diff
+            for f in self._process_files(parent_diff_file, basedir,
+                                         check_existance=True):
+                parent_files[f.origFile] = f
 
-        diffset = DiffSet(name=file["filename"], revision=0,
+        diffset = DiffSet(name=diff_file["filename"], revision=0,
                           history=diffset_history,
                           diffcompat=DEFAULT_DIFF_COMPAT_VERSION)
         diffset.repository = self.repository
         diffset.save()
 
-        # Sort the files so that header files come before implementation.
-        files.sort(cmp=self._compare_files, key=lambda f: f.origFile)
-
         for f in files:
+            if f.origFile in parent_files:
+                parent_file = parent_files[f.origFile]
+                parent_content = parent_file.data
+                source_rev = parent_file.origInfo
+            else:
+                parent_content = ""
+                source_rev = f.origInfo
+
+            dest_file = os.path.join(basedir, f.newFile).replace("\\", "/")
+
             filediff = FileDiff(diffset=diffset,
                                 source_file=f.origFile,
-                                dest_file=os.path.join(basedir, f.newFile).replace("\\", "/"),
-                                source_revision=smart_unicode(f.origInfo),
+                                dest_file=dest_file,
+                                source_revision=smart_unicode(source_rev),
                                 dest_detail=f.newInfo,
                                 diff=f.data,
+                                parent_diff=parent_content,
                                 binary=f.binary)
             filediff.save()
 
         return diffset
 
+    def _process_files(self, file, basedir, check_existance=False):
+        tool = self.repository.get_scmtool()
+
+        for f in tool.get_parser(file["content"]).parse():
+            f2, revision = tool.parse_diff_revision(f.origFile, f.origInfo)
+            if f2.startswith("/"):
+                filename = f2
+            else:
+                filename = os.path.join(basedir, f2).replace("\\", "/")
+
+            # FIXME: this would be a good place to find permissions errors
+            if (revision != PRE_CREATION and revision != UNKNOWN and
+                (check_existance and not tool.file_exists(filename, revision))):
+                raise scmtools.FileNotFoundError(filename, revision)
+
+            f.origFile = filename
+            f.origInfo = revision
+
+            yield f
+
+
     def _compare_files(self, filename1, filename2):
         """
         Compares two files, giving precedence to header files over source
Index: reviewboard/diffviewer/models.py
===============================================================
--- reviewboard/diffviewer/models.py	(revision 1360)
+++ reviewboard/diffviewer/models.py	(working copy)
@@ -1,8 +1,8 @@
-import base64
 from datetime import datetime
 
 from django.db import models
 from django.utils.translation import ugettext_lazy as _
+from djblets.util.fields import Base64Field
 
 from reviewboard.scmtools.models import Repository
 
@@ -24,17 +24,10 @@ class FileDiff(models.Model):
                                  core=True)
     source_revision = models.CharField(_("source file revision"), max_length=512)
     dest_detail = models.CharField(_("destination file details"), max_length=512)
-    diff_base64 = models.TextField(_("diff (Base64)"))
+    diff = Base64Field(_("diff"), db_column="diff_base64")
     binary = models.BooleanField(_("binary file"), default=False)
-
-    def _set_diff(self, data):
-        self.diff_base64 = base64.encodestring(data)
-
-    def _get_diff(self):
-        return base64.decodestring(self.diff_base64)
-
-    diff = property(fget=lambda self: self._get_diff(),
-                    fset=lambda self, v: self._set_diff(v))
+    parent_diff = Base64Field(_("parent diff"), db_column="parent_diff_base64",
+                              blank=True)
 
     def __unicode__(self):
         return u"%s (%s) -> %s (%s)" % (self.source_file, self.source_revision,
@@ -47,7 +40,7 @@ class FileDiff(models.Model):
             (None, {
                 'fields': ('diffset', ('source_file', 'source_revision'),
                            ('dest_file', 'dest_detail'),
-                           'binary', 'diff_base64')
+                           'binary', 'diff', 'parent_diff')
             }),
         )
 
Index: reviewboard/reviews/fixtures/test_reviewrequests.json
===============================================================
--- reviewboard/reviews/fixtures/test_reviewrequests.json	(revision 1360)
+++ reviewboard/reviews/fixtures/test_reviewrequests.json	(working copy)
@@ -1 +1 @@
-[{"pk": "1", "model": "reviews.comment", "fields": {"num_lines": 9, "timestamp": "2007-06-24 00:21:45", "text": "Sample comment.", "reply_to": null, "first_line": 333, "filediff": 11}}, {"pk": "2", "model": "reviews.comment", "fields": {"num_lines": 9, "timestamp": "2007-06-24 00:22:48", "text": "Generic reply", "reply_to": 1, "first_line": 333, "filediff": 11}}, {"pk": "3", "model": "reviews.comment", "fields": {"num_lines": 1, "timestamp": "2007-06-24 00:23:43", "text": "Sample comment 1", "reply_to": null, "first_line": 433, "filediff": 14}}, {"pk": "4", "model": "reviews.comment", "fields": {"num_lines": 1, "timestamp": "2007-06-24 00:24:28", "text": "Sample comment 2", "reply_to": null, "first_line": 449, "filediff": 14}}, {"pk": "1", "model": "reviews.group", "fields": {"display_name": "Dev Group", "name": "devgroup", "mailing_list": "devgroup@example.com", "users": [2, 3]}}, {"pk": "2", "model": "reviews.group", "fields": {"display_name": "New Group", "name": "newgroup", "mailing_list": "newgroup@example.com", "users": []}}, {"pk": "3", "model": "reviews.group", "fields": {"display_name": "Empty Group", "name": "emptygroup", "mailing_list": "", "users": []}}, {"pk": "4", "model": "reviews.group", "fields": {"display_name": "Private Group", "name": "privgroup", "mailing_list": "", "users": [2, 3, 4]}}, {"pk": "1", "model": "reviews.review", "fields": {"body_top": "Looks fine.", "ship_it": true, "timestamp": "2007-06-24 00:16:41", "base_reply_to": null, "email_message_id": "", "comments": [], "body_bottom_reply_to": null, "screenshot_comments": [], "user": 2, "body_bottom": "", "time_emailed": null, "body_top_reply_to": null, "review_request": 2, "public": true, "reviewed_diffset": 2}}, {"pk": "2", "model": "reviews.review", "fields": {"body_top": "Test", "ship_it": false, "timestamp": "2007-06-24 00:21:45", "base_reply_to": null, "email_message_id": "", "comments": [1], "body_bottom_reply_to": null, "screenshot_comments": [], "user": 2, "body_bottom": "", "time_emailed": null, "body_top_reply_to": null, "review_request": 3, "public": true, "reviewed_diffset": 3}}, {"pk": "3", "model": "reviews.review", "fields": {"body_top": "", "ship_it": false, "timestamp": "2007-06-24 00:22:48", "base_reply_to": 2, "email_message_id": "", "comments": [2], "body_bottom_reply_to": null, "screenshot_comments": [], "user": 3, "body_bottom": "", "time_emailed": null, "body_top_reply_to": null, "review_request": 3, "public": true, "reviewed_diffset": 3}}, {"pk": "4", "model": "reviews.review", "fields": {"body_top": "", "ship_it": false, "timestamp": "2007-06-24 00:23:43", "base_reply_to": null, "email_message_id": "", "comments": [3, 4], "body_bottom_reply_to": null, "screenshot_comments": [], "user": 3, "body_bottom": "", "time_emailed": null, "body_top_reply_to": null, "review_request": 3, "public": true, "reviewed_diffset": 3}}, {"pk": "5", "model": "reviews.review", "fields": {"body_top": "Grumpy body", "ship_it": false, "timestamp": "2007-06-24 00:25:33", "base_reply_to": null, "email_message_id": "", "comments": [], "body_bottom_reply_to": null, "screenshot_comments": [], "user": 4, "body_bottom": "", "time_emailed": null, "body_top_reply_to": null, "review_request": 3, "public": true, "reviewed_diffset": 3}}, {"pk": "6", "model": "reviews.review", "fields": {"body_top": "Dopey reply", "ship_it": false, "timestamp": "2007-06-24 00:25:52", "base_reply_to": 5, "email_message_id": "", "comments": [], "body_bottom_reply_to": null, "screenshot_comments": [], "user": 3, "body_bottom": "", "time_emailed": null, "body_top_reply_to": 5, "review_request": 3, "public": true, "reviewed_diffset": 3}}, {"pk": "7", "model": "reviews.review", "fields": {"body_top": "Grumpy reply", "ship_it": false, "timestamp": "2007-06-24 00:26:03", "base_reply_to": 5, "email_message_id": "", "comments": [], "body_bottom_reply_to": null, "screenshot_comments": [], "user": 4, "body_bottom": "", "time_emailed": null, "body_top_reply_to": 5, "review_request": 3, "public": true, "reviewed_diffset": 3}}, {"pk": "5", "model": "reviews.reviewrequest", "fields": {"status": "D", "last_updated": "2007-06-24 01:11:34", "description": "", "repository": 1, "inactive_screenshots": [], "target_groups": [], "email_message_id": "", "summary": "Added interdiff support", "changenum": null, "target_people": [2], "testing_done": "", "diffset_history": 5, "branch": "", "submitter": 2, "time_emailed": null, "time_added": "2007-06-24 00:45:13", "bugs_closed": "", "screenshots": [], "public": false}}, {"pk": "4", "model": "reviews.reviewrequest", "fields": {"status": "P", "last_updated": "2007-06-24 01:11:24", "description": "Test description.", "repository": 1, "inactive_screenshots": [], "target_groups": [], "email_message_id": "", "summary": "Made e-mail improvements", "changenum": 1234, "target_people": [2], "testing_done": "Tested.", "diffset_history": 4, "branch": "", "submitter": 4, "time_emailed": null, "time_added": "2007-06-24 00:42:42", "bugs_closed": "12345", "screenshots": [], "public": true}}, {"pk": "7", "model": "reviews.reviewrequest", "fields": {"status": "S", "last_updated": "2007-06-24 01:11:10", "description": "", "repository": 1, "inactive_screenshots": [], "target_groups": [], "email_message_id": "", "summary": "Improved login form", "changenum": null, "target_people": [1, 2], "testing_done": "", "diffset_history": 7, "branch": "", "submitter": 2, "time_emailed": null, "time_added": "2007-06-24 00:49:06", "bugs_closed": "", "screenshots": [], "public": true}}, {"pk": "6", "model": "reviews.reviewrequest", "fields": {"status": "P", "last_updated": "2007-06-24 01:10:59", "description": "Foo", "repository": 1, "inactive_screenshots": [], "target_groups": [3], "email_message_id": "", "summary": "Error dialog", "changenum": null, "target_people": [], "testing_done": "Bar", "diffset_history": 6, "branch": "trunk", "submitter": 3, "time_emailed": null, "time_added": "2007-06-24 00:47:14", "bugs_closed": "", "screenshots": [], "public": true}}, {"pk": "2", "model": "reviews.reviewrequest", "fields": {"status": "P", "last_updated": "2007-06-24 00:34:17", "description": "Be compatible with cleaned_data changes in Django.", "repository": 1, "inactive_screenshots": [], "target_groups": [1], "email_message_id": "", "summary": "Update for cleaned_data changes", "changenum": null, "target_people": [], "testing_done": "Works.", "diffset_history": 2, "branch": "trunk", "submitter": 3, "time_emailed": null, "time_added": "2007-06-24 00:14:32", "bugs_closed": "123", "screenshots": [], "public": true}}, {"pk": "1", "model": "reviews.reviewrequest", "fields": {"status": "P", "last_updated": "2007-06-24 00:32:47", "description": "", "repository": 1, "inactive_screenshots": [], "target_groups": [1], "email_message_id": "", "summary": "Comments Improvements", "changenum": null, "target_people": [], "testing_done": "", "diffset_history": 1, "branch": "trunk", "submitter": 2, "time_emailed": null, "time_added": "2007-06-24 00:12:44", "bugs_closed": "", "screenshots": [], "public": false}}, {"pk": "3", "model": "reviews.reviewrequest", "fields": {"status": "P", "last_updated": "2007-06-24 00:28:33", "description": "Added some user permissions checking for JSON API functions.", "repository": 1, "inactive_screenshots": [], "target_groups": [4], "email_message_id": null, "summary": "Add permission checking for JSON API", "changenum": null, "target_people": [2, 3], "testing_done": "Tested some functions.", "diffset_history": 3, "branch": "trunk", "submitter": 1, "time_emailed": null, "time_added": "2007-06-24 00:17:33", "bugs_closed": "1234, 5678, 8765, 4321", "screenshots": [], "public": true}}, {"pk": "1", "model": "diffviewer.diffset", "fields": {"name": "comments.diff", "repository": 1, "timestamp": "2007-06-24 00:12:57", "diffcompat": 1, "revision": 1, "history": 1}}, {"pk": "2", "model": "diffviewer.diffset", "fields": {"name": "cleaned_data.diff", "repository": 1, "timestamp": "2007-06-24 00:14:37", "diffcompat": 1, "revision": 1, "history": 2}}, {"pk": "3", "model": "diffviewer.diffset", "fields": {"name": "delete_review_req_permissions.diff", "repository": 1, "timestamp": "2007-06-24 00:17:47", "diffcompat": 1, "revision": 1, "history": 3}}, {"pk": "4", "model": "diffviewer.diffset", "fields": {"name": "email_improvements.diff", "repository": 1, "timestamp": "2007-06-24 00:42:45", "diffcompat": 1, "revision": 1, "history": 4}}, {"pk": "5", "model": "diffviewer.diffset", "fields": {"name": "interdiffs.diff", "repository": 1, "timestamp": "2007-06-24 00:45:25", "diffcompat": 1, "revision": 1, "history": 5}}, {"pk": "6", "model": "diffviewer.diffset", "fields": {"name": "error-output-dlg.diff", "repository": 1, "timestamp": "2007-06-24 00:47:18", "diffcompat": 1, "revision": 1, "history": 6}}, {"pk": "7", "model": "diffviewer.diffset", "fields": {"name": "improved-login-form.diff", "repository": 1, "timestamp": "2007-06-24 00:49:13", "diffcompat": 1, "revision": 1, "history": 7}}, {"pk": "1", "model": "diffviewer.diffsethistory", "fields": {"timestamp": "2007-06-24 00:12:44", "name": ""}}, {"pk": "2", "model": "diffviewer.diffsethistory", "fields": {"timestamp": "2007-06-24 00:14:32", "name": ""}}, {"pk": "3", "model": "diffviewer.diffsethistory", "fields": {"timestamp": "2007-06-24 00:17:33", "name": ""}}, {"pk": "4", "model": "diffviewer.diffsethistory", "fields": {"timestamp": "2007-06-24 00:42:42", "name": ""}}, {"pk": "5", "model": "diffviewer.diffsethistory", "fields": {"timestamp": "2007-06-24 00:45:13", "name": ""}}, {"pk": "6", "model": "diffviewer.diffsethistory", "fields": {"timestamp": "2007-06-24 00:47:14", "name": ""}}, {"pk": "7", "model": "diffviewer.diffsethistory", "fields": {"timestamp": "2007-06-24 00:49:06", "name": ""}}, {"pk": "1", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 1, "dest_detail": "(revision 321)", "source_revision": "320", "source_file": "\/trunk\/reviewboard\/reviews\/views.py", "dest_file": "\/trunk\/reviewboard\/reviews\/views.py", "diff_base64": "LS0tIHJldmlld3Mvdmlld3MucHkJKHJldmlzaW9uIDMyMCkKKysrIHJldmlld3Mvdmlld3MucHkJ\nKHJldmlzaW9uIDMyMSkKQEAgLTEsMyArMSw0IEBACitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRl\ndGltZQogaW1wb3J0IHJlCiAKIGZyb20gZGphbmdvIGltcG9ydCBuZXdmb3JtcyBhcyBmb3JtcwpA\nQCAtMTEsOSArMTIsMTEgQEAKIGZyb20gZGphbmdvLnZpZXdzLmdlbmVyaWMubGlzdF9kZXRhaWwg\naW1wb3J0IG9iamVjdF9saXN0CiBmcm9tIGRqYmxldHMuYXV0aC51dGlsIGltcG9ydCBsb2dpbl9y\nZXF1aXJlZAogCi1mcm9tIHJldmlld2JvYXJkLmRpZmZ2aWV3ZXIubW9kZWxzIGltcG9ydCBEaWZm\nU2V0LCBEaWZmU2V0SGlzdG9yeQorZnJvbSByZXZpZXdib2FyZC5kaWZmdmlld2VyLm1vZGVscyBp\nbXBvcnQgRGlmZlNldCwgRGlmZlNldEhpc3RvcnksIEZpbGVEaWZmCiBmcm9tIHJldmlld2JvYXJk\nLmRpZmZ2aWV3ZXIudmlld3MgaW1wb3J0IHZpZXdfZGlmZiwgdmlld19kaWZmX2ZyYWdtZW50Citm\ncm9tIHJldmlld2JvYXJkLmRpZmZ2aWV3ZXIudmlld3MgaW1wb3J0IFVzZXJWaXNpYmxlRXJyb3Is\nIGdldF9kaWZmX2ZpbGVzCiBmcm9tIHJldmlld2JvYXJkLnJldmlld3MubW9kZWxzIGltcG9ydCBS\nZXZpZXdSZXF1ZXN0LCBSZXZpZXdSZXF1ZXN0RHJhZnQsIFF1aXAKK2Zyb20gcmV2aWV3Ym9hcmQu\ncmV2aWV3cy5tb2RlbHMgaW1wb3J0IFJldmlldywgQ29tbWVudAogZnJvbSByZXZpZXdib2FyZC5y\nZXZpZXdzLmZvcm1zIGltcG9ydCBOZXdSZXZpZXdSZXF1ZXN0Rm9ybQogZnJvbSByZXZpZXdib2Fy\nZCBpbXBvcnQgc2NtdG9vbHMKIApAQCAtNDA2LDMgKzQwOSw3NCBAQAogICAgICAgICByZXNwb25z\nZVsnWC1KU09OJ10gPSBkYXRhCiAKICAgICByZXR1cm4gcmVzcG9uc2UKKworCitAbG9naW5fcmVx\ndWlyZWQKK2RlZiBjb21tZW50cyhyZXF1ZXN0LCByZXZpZXdfcmVxdWVzdF9pZCwgZmlsZWRpZmZf\naWQsIGxpbmUsIHJldmlzaW9uPU5vbmUsCisgICAgICAgICAgICAgdGVtcGxhdGVfbmFtZT0ncmV2\naWV3cy9saW5lX2NvbW1lbnRzLmh0bWwnKToKKyAgICBsaW5lID0gaW50KGxpbmUpCisKKyAgICBy\nZXZpZXdfcmVxdWVzdCA9IGdldF9vYmplY3Rfb3JfNDA0KFJldmlld1JlcXVlc3QsIHBrPXJldmll\nd19yZXF1ZXN0X2lkKQorICAgIGZpbGVkaWZmID0gZ2V0X29iamVjdF9vcl80MDQoRmlsZURpZmYs\nIHBrPWZpbGVkaWZmX2lkKQorCisgICAgaWYgcmVxdWVzdC5QT1NUOgorICAgICAgICB0ZXh0ID0g\ncmVxdWVzdC5QT1NUWyd0ZXh0J10KKyAgICAgICAgbnVtX2xpbmVzID0gcmVxdWVzdC5QT1NUWydu\ndW1fbGluZXMnXQorCisgICAgICAgICMgVE9ETzogU2FuaXR5IGNoZWNrIHRoZSBmaWVsZHMKKyAg\nICAgICAgaWYgZmlsZWRpZmYuZGlmZnNldC5oaXN0b3J5ICE9IHJldmlld19yZXF1ZXN0LmRpZmZz\nZXRfaGlzdG9yeToKKyAgICAgICAgICAgIHJhaXNlIEh0dHA0MDMoKTsKKworCisgICAgICAgIGlm\nIHJlcXVlc3QuUE9TVFsnYWN0aW9uJ10gPT0gInNldCI6CisgICAgICAgICAgICByZXZpZXcsIHJl\ndmlld19pc19uZXcgPSBSZXZpZXcub2JqZWN0cy5nZXRfb3JfY3JlYXRlKAorICAgICAgICAgICAg\nICAgIHJldmlld19yZXF1ZXN0PXJldmlld19yZXF1ZXN0LAorICAgICAgICAgICAgICAgIHVzZXI9\ncmVxdWVzdC51c2VyLAorICAgICAgICAgICAgICAgIHB1YmxpYz1GYWxzZSwKKyAgICAgICAgICAg\nICAgICByZXZpZXdlZF9kaWZmc2V0PWZpbGVkaWZmLmRpZmZzZXQpCisKKyAgICAgICAgICAgIGlm\nIHJldmlld19pc19uZXc6CisgICAgICAgICAgICAgICAgcmV2aWV3LnNhdmUoKQorCisgICAgICAg\nICAgICBjb21tZW50LCBjb21tZW50X2lzX25ldyA9IHJldmlldy5jb21tZW50cy5nZXRfb3JfY3Jl\nYXRlKAorICAgICAgICAgICAgICAgIGZpbGVkaWZmPWZpbGVkaWZmLAorICAgICAgICAgICAgICAg\nIGZpcnN0X2xpbmU9bGluZSkKKworICAgICAgICAgICAgY29tbWVudC50ZXh0ID0gcmVxdWVzdC5Q\nT1NUWyd0ZXh0J10KKyAgICAgICAgICAgIGNvbW1lbnQubnVtX2xpbmVzID0gbnVtX2xpbmVzCisg\nICAgICAgICAgICBjb21tZW50LnRpbWVzdGFtcCA9IGRhdGV0aW1lLm5vdygpCisgICAgICAgICAg\nICBjb21tZW50LnNhdmUoKQorCisgICAgICAgICAgICByZXZpZXcuY29tbWVudHMuYWRkKGNvbW1l\nbnQpCisgICAgICAgICAgICByZXZpZXcuc2F2ZSgpCisgICAgICAgIGVsaWYgcmVxdWVzdC5QT1NU\nWydhY3Rpb24nXSA9PSAiZGVsZXRlIjoKKyAgICAgICAgICAgIHJldmlldyA9IGdldF9vYmplY3Rf\nb3JfNDA0KFJldmlldywKKyAgICAgICAgICAgICAgICByZXZpZXdfcmVxdWVzdD1yZXZpZXdfcmVx\ndWVzdCwKKyAgICAgICAgICAgICAgICB1c2VyPXJlcXVlc3QudXNlciwKKyAgICAgICAgICAgICAg\nICBwdWJsaWM9RmFsc2UsCisgICAgICAgICAgICAgICAgcmV2aWV3ZWRfZGlmZnNldD1maWxlZGlm\nZi5kaWZmc2V0KQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY29tbWVudCA9\nIHJldmlldy5jb21tZW50cy5nZXQoZmlsZWRpZmY9ZmlsZWRpZmYsCisgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfbGluZT1saW5lKQorICAgICAgICAg\nICAgICAgIGNvbW1lbnQuZGVsZXRlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBDb21tZW50LkRvZXNO\nb3RFeGlzdDoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIHN0cmlwcGVkX2Jv\nZHkgPSByZXZpZXcuYm9keS5zdHJpcCgpCisgICAgICAgICAgICBpZiAoc3RyaXBwZWRfYm9keSA9\nPSAie3tjb21tZW50c319IiBvciBzdHJpcHBlZF9ib2R5ID09ICIiKSBhbmQgXAorICAgICAgICAg\nICAgICAgcmV2aWV3LmNvbW1lbnRzLmNvdW50KCkgPT0gMDoKKyAgICAgICAgICAgICAgICByZXZp\nZXcuZGVsZXRlKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEh0dHA0MDMoKQor\nCisgICAgY29tbWVudHMgPSBbXQorICAgIGZvciBjb21tZW50IGluIGZpbGVkaWZmLmNvbW1lbnRf\nc2V0LmFsbCgpOgorICAgICAgICBpZiBjb21tZW50LnJldmlld19zZXQuY291bnQoKSA+IDAgYW5k\nIGNvbW1lbnQuZmlyc3RfbGluZSA9PSBsaW5lOgorICAgICAgICAgICAgcmV2aWV3ID0gY29tbWVu\ndC5yZXZpZXdfc2V0LmdldCgpCisgICAgICAgICAgICBpZiByZXZpZXcucHVibGljIG9yIHJldmll\ndy51c2VyID09IHJlcXVlc3QudXNlcjoKKyAgICAgICAgICAgICAgICBjb21tZW50cy5hcHBlbmQo\nY29tbWVudCkKKworICAgIHJldHVybiByZW5kZXJfdG9fcmVzcG9uc2UodGVtcGxhdGVfbmFtZSwg\nUmVxdWVzdENvbnRleHQocmVxdWVzdCwgeworICAgICAgICAnY29tbWVudHMnOiBjb21tZW50cywK\nKyAgICB9KSkK\n"}}, {"pk": "2", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 1, "dest_detail": "(revision 321)", "source_revision": "320", "source_file": "\/trunk\/reviewboard\/reviews\/models.py", "dest_file": "\/trunk\/reviewboard\/reviews\/models.py", "diff_base64": "LS0tIHJldmlld3MvbW9kZWxzLnB5CShyZXZpc2lvbiAzMjApCisrKyByZXZpZXdzL21vZGVscy5w\neQkocmV2aXNpb24gMzIxKQpAQCAtMTYxLDcgKzE2MSw3IEBACiAgICAgdGltZXN0YW1wID0gbW9k\nZWxzLkRhdGVUaW1lRmllbGQoJ1RpbWVzdGFtcCcsIGF1dG9fbm93X2FkZD1UcnVlKQogICAgIHB1\nYmxpYyA9IG1vZGVscy5Cb29sZWFuRmllbGQoIlB1YmxpYyIsIGRlZmF1bHQ9RmFsc2UpCiAgICAg\nc2hpcF9pdCA9IG1vZGVscy5Cb29sZWFuRmllbGQoIlNoaXAgSXQiLCBkZWZhdWx0PUZhbHNlKQot\nICAgIGJvZHkgPSBtb2RlbHMuVGV4dEZpZWxkKCJCb2R5IikKKyAgICBib2R5ID0gbW9kZWxzLlRl\neHRGaWVsZCgiQm9keSIsIGRlZmF1bHQ9IlxuXG57e2NvbW1lbnRzfX0iKQogICAgIGNvbW1lbnRz\nID0gbW9kZWxzLk1hbnlUb01hbnlGaWVsZChDb21tZW50LCB2ZXJib3NlX25hbWU9IkNvbW1lbnRz\nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZT1GYWxzZSwgYmxh\nbms9VHJ1ZSkKICAgICByZXZpZXdlZF9kaWZmc2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoRGlmZlNl\ndCwgdmVyYm9zZV9uYW1lPSJSZXZpZXdlZCBEaWZmIiwK\n"}}, {"pk": "3", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 1, "dest_detail": "(revision 321)", "source_revision": "320", "source_file": "\/trunk\/reviewboard\/reviews\/templatetags\/reviewtags.py", "dest_file": "\/trunk\/reviewboard\/reviews\/templatetags\/reviewtags.py", "diff_base64": "LS0tIHJldmlld3MvdGVtcGxhdGV0YWdzL3Jldmlld3RhZ3MucHkJKHJldmlzaW9uIDMyMCkKKysr\nIHJldmlld3MvdGVtcGxhdGV0YWdzL3Jldmlld3RhZ3MucHkJKHJldmlzaW9uIDMyMSkKQEAgLTEz\nMSw3ICsxMzEsNyBAQAogICAgIHJldHVybiBGb3JDb21tZW50KGZpbGVkaWZmLCByZXZpZXcsIG5v\nZGVsaXN0X2xvb3ApCiAKIAotY2xhc3MgQ29tbWVudEluZm8odGVtcGxhdGUuTm9kZSk6CitjbGFz\ncyBDb21tZW50Q291bnRzKHRlbXBsYXRlLk5vZGUpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBm\naWxlZGlmZik6CiAgICAgICAgIHNlbGYuZmlsZWRpZmYgPSBmaWxlZGlmZgogCkBAIC0xNDAsMzUg\nKzE0MCwzOSBAQAogICAgICAgICAgICAgZmlsZWRpZmYgPSByZXNvbHZlX3ZhcmlhYmxlKHNlbGYu\nZmlsZWRpZmYsIGNvbnRleHQpCiAgICAgICAgIGV4Y2VwdCBWYXJpYWJsZURvZXNOb3RFeGlzdDoK\nICAgICAgICAgICAgIHJhaXNlIHRlbXBsYXRlLlRlbXBsYXRlU3ludGF4RXJyb3IsIFwKLSAgICAg\nICAgICAgICAgICAiSW52YWxpZCB2YXJpYWJsZSAlcyBwYXNzZWQgdG8gY29tbWVudGluZm8gdGFn\nLiIgJSBcCisgICAgICAgICAgICAgICAgIkludmFsaWQgdmFyaWFibGUgJXMgcGFzc2VkIHRvIGNv\nbW1lbnRjb3VudHMgdGFnLiIgJSBcCiAgICAgICAgICAgICAgICAgc2VsZi5maWxlZGlmZgogCiAg\nICAgICAgIGNvbW1lbnRzID0ge30KKyAgICAgICAgdXNlciA9IGNvbnRleHQuZ2V0KCd1c2VyJywg\nTm9uZSkKIAogICAgICAgICBmb3IgY29tbWVudCBpbiBmaWxlZGlmZi5jb21tZW50X3NldC5hbGwo\nKToKLSAgICAgICAgICAgIGxpbmUgPSBjb21tZW50LmZpcnN0X2xpbmUKKyAgICAgICAgICAgIGlm\nIGNvbW1lbnQucmV2aWV3X3NldC5jb3VudCgpID4gMDoKKyAgICAgICAgICAgICAgICByZXZpZXcg\nPSBjb21tZW50LnJldmlld19zZXQuZ2V0KCkKKyAgICAgICAgICAgICAgICBpZiByZXZpZXcucHVi\nbGljIG9yIHJldmlldy51c2VyID09IHVzZXI6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBj\nb21tZW50LmZpcnN0X2xpbmUKIAotICAgICAgICAgICAgaWYgbm90IGNvbW1lbnRzLmhhc19rZXko\nbGluZSk6Ci0gICAgICAgICAgICAgICAgY29tbWVudHNbbGluZV0gPSBbXQorICAgICAgICAgICAg\nICAgICAgICBpZiBub3QgY29tbWVudHMuaGFzX2tleShsaW5lKToKKyAgICAgICAgICAgICAgICAg\nICAgICAgIGNvbW1lbnRzW2xpbmVdID0gW10KIAotICAgICAgICAgICAgY29tbWVudHNbbGluZV0u\nYXBwZW5kKHsKLSAgICAgICAgICAgICAgICAndGV4dCc6IGNvbW1lbnQudGV4dCwKLSAgICAgICAg\nICAgICAgICAndGltZXN0YW1wJzogY29tbWVudC50aW1lc3RhbXAuc3RyZnRpbWUoIiVZLSVtLSVk\nICVIOiVNOiVTIiksCi0gICAgICAgICAgICAgICAgJ251bV9saW5lcyc6IGNvbW1lbnQubnVtX2xp\nbmVzLAotICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAgICAgY29tbWVudHNbbGluZV0u\nYXBwZW5kKHsKKyAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0JzogY29tbWVudC50ZXh0LAor\nICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsZHJhZnQnOiByZXZpZXcudXNlciA9PSB1c2Vy\nIGFuZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCByZXZpZXcu\ncHVibGljLAorICAgICAgICAgICAgICAgICAgICB9KQogCiAgICAgICAgIHJldHVybiBzaW1wbGVq\nc29uLmR1bXBzKGNvbW1lbnRzKQogCiAKIEByZWdpc3Rlci50YWcKLWRlZiBjb21tZW50aW5mbyhw\nYXJzZXIsIHRva2VuKToKK2RlZiBjb21tZW50Y291bnRzKHBhcnNlciwgdG9rZW4pOgogICAgIHRy\neToKICAgICAgICAgdGFnX25hbWUsIGZpbGVkaWZmID0gdG9rZW4uc3BsaXRfY29udGVudHMoKQog\nICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICByYWlzZSB0ZW1wbGF0ZS5UZW1wbGF0ZVN5\nbnRheEVycm9yLCBcCiAgICAgICAgICAgICAiJXIgdGFnIHJlcXVpcmVzIGEgdGltZXN0YW1wIgog\nCi0gICAgcmV0dXJuIENvbW1lbnRJbmZvKGZpbGVkaWZmKQorICAgIHJldHVybiBDb21tZW50Q291\nbnRzKGZpbGVkaWZmKQogCiAKIEByZWdpc3Rlci5maWx0ZXIK\n"}}, {"pk": "4", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 1, "dest_detail": "(revision 321)", "source_revision": "320", "source_file": "\/trunk\/reviewboard\/reviews\/forms.py", "dest_file": "\/trunk\/reviewboard\/reviews\/forms.py", "diff_base64": "LS0tIHJldmlld3MvZm9ybXMucHkJKHJldmlzaW9uIDMyMCkKKysrIHJldmlld3MvZm9ybXMucHkJ\nKHJldmlzaW9uIDMyMSkKQEAgLTQsNyArNCw3IEBACiBmcm9tIGRqYW5nby5jb250cmliLmF1dGgu\nbW9kZWxzIGltcG9ydCBVc2VyLCBHcm91cAogCiBmcm9tIHJldmlld2JvYXJkLmRpZmZ2aWV3ZXIu\nbW9kZWxzIGltcG9ydCBEaWZmU2V0SGlzdG9yeQotZnJvbSByZXZpZXdib2FyZC5yZXZpZXdzLm1v\nZGVscyBpbXBvcnQgUmV2aWV3UmVxdWVzdAorZnJvbSByZXZpZXdib2FyZC5yZXZpZXdzLm1vZGVs\ncyBpbXBvcnQgUmV2aWV3LCBSZXZpZXdSZXF1ZXN0CiAKIGNsYXNzIE5ld1Jldmlld1JlcXVlc3RG\nb3JtKGZvcm1zLkZvcm0pOgogICAgIHN1bW1hcnkgPSBmb3Jtcy5DaGFyRmllbGQobWF4X2xlbmd0\naD0zMDApCg==\n"}}, {"pk": "5", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 1, "dest_detail": "(revision 321)", "source_revision": "320", "source_file": "\/trunk\/reviewboard\/urls.py", "dest_file": "\/trunk\/reviewboard\/urls.py", "diff_base64": "LS0tIHVybHMucHkJKHJldmlzaW9uIDMyMCkKKysrIHVybHMucHkJKHJldmlzaW9uIDMyMSkKQEAg\nLTg1LDYgKzg1LDEyIEBACiAgICAgKHInXnJldmlld3MvKD9QPHJldmlld19yZXF1ZXN0X2lkPlsw\nLTldKykvKD9QPG1ldGhvZD4oanNvbnx4bWwpKS8kJywKICAgICAgJ3Jldmlld2JvYXJkLnJldmll\nd3Mudmlld3MucmV2aWV3X3JlcXVlc3RfZmllbGQnKSwKIAorICAgICMgQ29tbWVudHMKKyAgICAo\ncidecmV2aWV3cy8oP1A8cmV2aWV3X3JlcXVlc3RfaWQ+WzAtOV0rKS9kaWZmL2NvbW1lbnRzLyg\/\nUDxmaWxlZGlmZl9pZD5bMC05XSspLyg\/UDxsaW5lPlswLTldKykvJCcsCisgICAgICdyZXZpZXdi\nb2FyZC5yZXZpZXdzLnZpZXdzLmNvbW1lbnRzJyksCisgICAgKHInXnJldmlld3MvKD9QPHJldmll\nd19yZXF1ZXN0X2lkPlswLTldKykvZGlmZi8oP1A8cmV2aXNpb24+WzAtOV0rKS9jb21tZW50cy8o\nP1A8ZmlsZWRpZmZfaWQ+WzAtOV0rKS8oP1A8bGluZT5bMC05XSspLyQnLAorICAgICAncmV2aWV3\nYm9hcmQucmV2aWV3cy52aWV3cy5jb21tZW50cycpLAorCiAgICAgIyBVc2VycwogICAgIChyJ151\nc2Vycy8kJywgJ3Jldmlld2JvYXJkLnJldmlld3Mudmlld3Muc3VibWl0dGVyX2xpc3QnLAogICAg\nICB7J3RlbXBsYXRlX25hbWUnOiAncmV2aWV3cy9zdWJtaXR0ZXJfbGlzdC5odG1sJ30pLAo=\n"}}, {"pk": "6", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 1, "dest_detail": "(revision 321)", "source_revision": "PRE-CREATION", "source_file": "\/trunk\/reviewboard\/templates\/reviews\/line_comments.html", "dest_file": "\/trunk\/reviewboard\/templates\/reviews\/line_comments.html", "diff_base64": "LS0tIHRlbXBsYXRlcy9yZXZpZXdzL2xpbmVfY29tbWVudHMuaHRtbAkocmV2aXNpb24gMCkKKysr\nIHRlbXBsYXRlcy9yZXZpZXdzL2xpbmVfY29tbWVudHMuaHRtbAkocmV2aXNpb24gMzIxKQpAQCAt\nMCwwICsxLDEzIEBACis8b2wgaWQ9ImNvbW1lbnRzLWxpc3QiPgoreyUgZm9yIGNvbW1lbnQgaW4g\nY29tbWVudHMgJX0KKyA8bGkgY2xhc3M9ImNvbW1lbnQiPgorICA8ZGw+CisgICA8ZHQ+CisgICAg\nPGEgaHJlZj0ie3tjb21tZW50LnJldmlld19zZXQuZ2V0LnVzZXIuZ2V0X2Fic29sdXRlX3VybH19\nIj57JSBmaXJzdG9mIGNvbW1lbnQucmV2aWV3X3NldC5nZXQudXNlci5nZXRfZnVsbF9uYW1lIGNv\nbW1lbnQucmV2aWV3X3NldC5nZXQudXNlci51c2VybmFtZSAlfTwvYT4KKyAgICA8c3BhbiBjbGFz\ncz0idGltZXN0YW1wIj57e2NvbW1lbnQudGltZXN0YW1wfX08L3NwYW4+CisgICA8L2R0PgorICAg\nPGRkPjxwcmU+e3tjb21tZW50LnRleHR8ZXNjYXBlfX08L3ByZT48L2RkPgorICA8L2RsPgorIDwv\nbGk+Cit7JSBlbmRmb3IgJX0KKzwvb2w+Cg==\n"}}, {"pk": "7", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 1, "dest_detail": "(revision 321)", "source_revision": "320", "source_file": "\/trunk\/reviewboard\/templates\/diffviewer\/view_diff.html", "dest_file": "\/trunk\/reviewboard\/templates\/diffviewer\/view_diff.html", "diff_base64": "LS0tIHRlbXBsYXRlcy9kaWZmdmlld2VyL3ZpZXdfZGlmZi5odG1sCShyZXZpc2lvbiAzMjApCisr\nKyB0ZW1wbGF0ZXMvZGlmZnZpZXdlci92aWV3X2RpZmYuaHRtbAkocmV2aXNpb24gMzIxKQpAQCAt\nNCwxMCArNCwxNSBAQAogeyUgYmxvY2sgdGl0bGUgJX1EaWZmIFZpZXdlcnslIGVuZGJsb2NrICV9\nCiB7JSBibG9jayBleHRyYWhlYWQgJX0KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz\ncmM9Ii9zY3JpcHRzL3l1aS95YWhvby95YWhvby1taW4uanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0\neXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3NjcmlwdHMveXVpL2FuaW1hdGlvbi9hbmltYXRp\nb24tbWluLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9\nIi9zY3JpcHRzL3l1aS9jb25uZWN0aW9uL2Nvbm5lY3Rpb24tbWluLmpzIj48L3NjcmlwdD4KIDxz\nY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9zY3JpcHRzL3l1aS9ldmVudC9ldmVu\ndC1taW4uanMiPjwvc2NyaXB0PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i\nL3NjcmlwdHMveXVpL2RvbS9kb20tbWluLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4\ndC9qYXZhc2NyaXB0IiBzcmM9Ii9zY3JpcHRzL3l1aS9kcmFnZHJvcC9kcmFnZHJvcC1taW4uanMi\nPjwvc2NyaXB0PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3NjcmlwdHMv\neXVpLWV4dC95dWktZXh0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3Jp\ncHQiIHNyYz0iL3NjcmlwdHMvcmIvY29yZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IGxhbmd1YWdl\nPSJqYXZhc2NyaXB0IiBzcmM9Ii9zY3JpcHRzL2RpZmZ2aWV3ZXIuanMiPjwvc2NyaXB0PgorPGxp\nbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL2Nzcy95dWktdWkuY3Nz\nIiAvPgogeyUgZW5kYmxvY2sgJX0KIAogeyUgYmxvY2sgY29udGVudCAlfQpAQCAtNDksMTEgKzU0\nLDI3IEBACiA8YSBuYW1lPSJ7e2ZpbGUuaW5kZXh9fSI+PC9hPgogeyUgaW5jbHVkZSAiZGlmZnZp\nZXdlci9kaWZmX2ZpbGVfZnJhZ21lbnQuaHRtbCIgJX0KIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFz\nY3JpcHQiPgotICBhZGRDb21tZW50cygiZmlsZXt7ZmlsZS5pbmRleH19IiwgeyUgY29tbWVudGlu\nZm8gZmlsZS5maWxlZGlmZiAlfSk7CisgIGdGaWxlQW5jaG9yVG9JZFsiZmlsZXt7ZmlsZS5pbmRl\neH19Il0gPSB7e2ZpbGUuZmlsZWRpZmYuaWR9fTsKKyAgYWRkQ29tbWVudHMoImZpbGV7e2ZpbGUu\naW5kZXh9fSIsIHslIGNvbW1lbnRjb3VudHMgZmlsZS5maWxlZGlmZiAlfSk7CiA8L3NjcmlwdD4K\nIHslIGVuZGZvciAlfQogPGEgbmFtZT0iaW5kZXhfZm9vdGVyIj48L2E+CiB7JSBpbmNsdWRlICJk\naWZmdmlld2VyL2NoYW5nZWluZGV4Lmh0bWwiICV9CiB7JSBlbmRpZiAlfQogPC9kaXY+CisKKzxk\naXYgaWQ9ImNvbW1lbnQtZGxnIj4KKyA8ZGl2IGNsYXNzPSJ5ZGxnLWhkIj5Db21tZW50czwvZGl2\nPgorIDxkaXYgY2xhc3M9InlkbGctYmQiPgorICA8ZGl2IGlkPSJ0YWItcmV2aWV3IiBjbGFzcz0i\neWRsZy10YWIiIHRpdGxlPSJSZXZpZXcgdGhpcyBsaW5lIj4KKyAgIDxmb3JtIGlkPSJjb21tZW50\nZm9ybSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249ImNvbW1lbnRzLyI+CisJPGlucHV0IHR5cGU9Imhp\nZGRlbiIgbmFtZT0iYWN0aW9uIiBpZD0iaWRfYWN0aW9uIiB2YWx1ZT0iIiAvPgorCTxpbnB1dCB0\neXBlPSJoaWRkZW4iIG5hbWU9Im51bV9saW5lcyIgaWQ9ImlkX251bV9saW5lcyIgdmFsdWU9IiIg\nLz4KKyAgICA8bGFiZWwgZm9yPSJpZF9jb21tZW50Ij5Db21tZW50PC9sYWJlbD4KKwk8dGV4dGFy\nZWEgaWQ9ImlkX2NvbW1lbnQiIG5hbWU9InRleHQiIHJvd3M9IjE1IiBjb2xzPSI0MCI+PC90ZXh0\nYXJlYT4KKyAgIDwvZm9ybT4KKyAgPC9kaXY+CisgIDxkaXYgaWQ9InRhYi1jb21tZW50cyIgY2xh\nc3M9InlkbGctdGFiIiB0aXRsZT0iQ29tbWVudHMiPgorIDwvZGl2PgorPC9kaXY+CiB7JSBlbmRi\nbG9jayAlfQo=\n"}}, {"pk": "8", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 2, "dest_detail": "(working copy)", "source_revision": "569", "source_file": "\/trunk\/reviewboard\/accounts\/views.py", "dest_file": "\/trunk\/reviewboard\/accounts\/views.py", "diff_base64": "LS0tIGFjY291bnRzL3ZpZXdzLnB5CShyZXZpc2lvbiA1NjkpCisrKyBhY2NvdW50cy92aWV3cy5w\neQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsMTEgQEAKICAgICAgICAgZm9ybSA9IFByZWZl\ncmVuY2VzRm9ybShyZXF1ZXN0LlBPU1QpCiAKICAgICAgICAgaWYgZm9ybS5pc192YWxpZCgpOgot\nICAgICAgICAgICAgcmVxdWVzdC51c2VyLmdyb3VwX3NldCA9IGZvcm0uY2xlYW5fZGF0YVsnZ3Jv\ndXBzJ10KKyAgICAgICAgICAgICMgWFhYIENvbXBhdGliaWxpdHkgd2l0aCBEamFuZ28gMC45NiBh\nbmQgMS4wLgorICAgICAgICAgICAgZm9ybWRhdGEgPSBnZXRhdHRyKGZvcm0sICJjbGVhbmVkX2Rh\ndGEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoZm9ybSwgImNsZWFu\nX2RhdGEiLCBOb25lKSkKKworICAgICAgICAgICAgcmVxdWVzdC51c2VyLmdyb3VwX3NldCA9IGZv\ncm1kYXRhWydncm91cHMnXQogICAgICAgICAgICAgcmVxdWVzdC51c2VyLnNhdmUoKQogCiAgICAg\nICAgICAgICBwcm9maWxlLCBwcm9maWxlX2lzX25ldyA9IFwK\n"}}, {"pk": "9", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 2, "dest_detail": "(working copy)", "source_revision": "569", "source_file": "\/trunk\/reviewboard\/reviews\/forms.py", "dest_file": "\/trunk\/reviewboard\/reviews\/forms.py", "diff_base64": "LS0tIHJldmlld3MvZm9ybXMucHkJKHJldmlzaW9uIDU2OSkKKysrIHJldmlld3MvZm9ybXMucHkJ\nKHdvcmtpbmcgY29weSkKQEAgLTQxLDE2ICs0MSwyMCBAQAogICAgICAgICByZXR1cm4gc2V0KHJl\nc3VsdCkKIAogICAgIGRlZiBjcmVhdGUoc2VsZiwgdXNlciwgZmlsZSk6Ci0gICAgICAgIHJlcG9z\naXRvcnkgPSBSZXBvc2l0b3J5Lm9iamVjdHMuZ2V0KHBrPXNlbGYuY2xlYW5fZGF0YVsncmVwb3Np\ndG9yeSddKQotICAgICAgICBjaGFuZ2VudW0gPSBzZWxmLmNsZWFuX2RhdGFbJ2NoYW5nZW51bSdd\nIG9yIE5vbmUKKyAgICAgICAgIyBYWFggQ29tcGF0aWJpbGl0eSB3aXRoIERqYW5nbyAwLjk2IGFu\nZCAxLjAuCisgICAgICAgIGZvcm1kYXRhID0gZ2V0YXR0cihzZWxmLCAiY2xlYW5lZF9kYXRhIiwK\nKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoc2VsZiwgImNsZWFuX2RhdGEiLCBO\nb25lKSkKIAorICAgICAgICByZXBvc2l0b3J5ID0gUmVwb3NpdG9yeS5vYmplY3RzLmdldChwaz1m\nb3JtZGF0YVsncmVwb3NpdG9yeSddKQorICAgICAgICBjaGFuZ2VudW0gPSBmb3JtZGF0YVsnY2hh\nbmdlbnVtJ10gb3IgTm9uZQorCiAgICAgICAgIHJldmlld19yZXF1ZXN0ID0gcmV2aWV3c19kYi5j\ncmVhdGVfcmV2aWV3X3JlcXVlc3QodXNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5LAogICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZW51bSkKIAog\nICAgICAgICBkaWZmX2Zvcm0gPSBVcGxvYWREaWZmRm9ybShkYXRhPXsKLSAgICAgICAgICAgICdi\nYXNlZGlyJzogc2VsZi5jbGVhbl9kYXRhWydiYXNlZGlyJ10sCi0gICAgICAgICAgICAncGF0aCc6\nIHNlbGYuY2xlYW5fZGF0YVsnZGlmZl9wYXRoJ10sCisgICAgICAgICAgICAnYmFzZWRpcic6IGZv\ncm1kYXRhWydiYXNlZGlyJ10sCisgICAgICAgICAgICAncGF0aCc6IGZvcm1kYXRhWydkaWZmX3Bh\ndGgnXSwKICAgICAgICAgICAgICdyZXBvc2l0b3J5aWQnOiByZXBvc2l0b3J5LmlkLAogICAgICAg\nICB9KQogICAgICAgICBkaWZmX2Zvcm0uZnVsbF9jbGVhbigpCkBAIC02NSwxMCArNjksMTQgQEAK\nICAgICBwYXRoID0gZm9ybXMuQ2hhckZpZWxkKHdpZGdldD1mb3Jtcy5GaWxlSW5wdXQoKSkKIAog\nICAgIGRlZiBjcmVhdGUoc2VsZiwgZGF0YSwgcmV2aWV3KToKKyAgICAgICAgIyBYWFggQ29tcGF0\naWJpbGl0eSB3aXRoIERqYW5nbyAwLjk2IGFuZCAxLjAuCisgICAgICAgIGZvcm1kYXRhID0gZ2V0\nYXR0cihzZWxmLCAiY2xlYW5lZF9kYXRhIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdl\ndGF0dHIoc2VsZiwgImNsZWFuX2RhdGEiLCBOb25lKSkKKwogICAgICAgICBkcmFmdCA9IFJldmll\nd1JlcXVlc3REcmFmdC5jcmVhdGUocmV2aWV3KQogCi0gICAgICAgIHNjcmVlbnNob3QgPSBTY3Jl\nZW5zaG90KGNhcHRpb249c2VsZi5jbGVhbl9kYXRhWydjYXB0aW9uJ10sCi0gICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgIGRyYWZ0X2NhcHRpb249c2VsZi5jbGVhbl9kYXRhWydjYXB0aW9u\nJ10pCisgICAgICAgIHNjcmVlbnNob3QgPSBTY3JlZW5zaG90KGNhcHRpb249Zm9ybWRhdGFbJ2Nh\ncHRpb24nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZnRfY2FwdGlvbj1m\nb3JtZGF0YVsnY2FwdGlvbiddKQogICAgICAgICBzY3JlZW5zaG90LnNhdmUoKQogICAgICAgICBz\nY3JlZW5zaG90LnNhdmVfaW1hZ2VfZmlsZShkYXRhWyJmaWxlbmFtZSJdLCBkYXRhWyJjb250ZW50\nIl0pCiAK\n"}}, {"pk": "10", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 2, "dest_detail": "(working copy)", "source_revision": "569", "source_file": "\/trunk\/reviewboard\/diffviewer\/forms.py", "dest_file": "\/trunk\/reviewboard\/diffviewer\/forms.py", "diff_base64": "LS0tIGRpZmZ2aWV3ZXIvZm9ybXMucHkJKHJldmlzaW9uIDU2OSkKKysrIGRpZmZ2aWV3ZXIvZm9y\nbXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTE1LDggKzE1LDEyIEBACiAgICAgcGF0aCA9IGZvcm1z\nLkNoYXJGaWVsZCh3aWRnZXQ9Zm9ybXMuRmlsZUlucHV0KCkpCiAKICAgICBkZWYgY3JlYXRlKHNl\nbGYsIGZpbGUsIGRpZmZzZXRfaGlzdG9yeT1Ob25lKToKKyAgICAgICAgIyBYWFggQ29tcGF0aWJp\nbGl0eSB3aXRoIERqYW5nbyAwLjk2IGFuZCAxLjAuCisgICAgICAgIGZvcm1kYXRhID0gZ2V0YXR0\ncihzZWxmLCAiY2xlYW5lZF9kYXRhIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0\ndHIoc2VsZiwgImNsZWFuX2RhdGEiLCBOb25lKSkKKwogICAgICAgICAjIFBhcnNlIHRoZSBkaWZm\nCi0gICAgICAgIHJlcG9zaXRvcnkgPSBSZXBvc2l0b3J5Lm9iamVjdHMuZ2V0KHBrPXNlbGYuY2xl\nYW5fZGF0YVsncmVwb3NpdG9yeWlkJ10pCisgICAgICAgIHJlcG9zaXRvcnkgPSBSZXBvc2l0b3J5\nLm9iamVjdHMuZ2V0KHBrPWZvcm1kYXRhWydyZXBvc2l0b3J5aWQnXSkKIAogICAgICAgICBmaWxl\ncyA9IGRpZmZwYXJzZXIucGFyc2UoZmlsZVsiY29udGVudCJdKQogCkBAIC0yOSw3ICszMyw3IEBA\nCiAgICAgICAgIGlmIHRvb2wuZ2V0X2RpZmZzX3VzZV9hYnNvbHV0ZV9wYXRocygpOgogICAgICAg\nICAgICAgYmFzZWRpciA9ICcnCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBiYXNlZGlyID0g\nc3RyKHNlbGYuY2xlYW5fZGF0YVsnYmFzZWRpciddKSArICcvJworICAgICAgICAgICAgYmFzZWRp\nciA9IHN0cihmb3JtZGF0YVsnYmFzZWRpciddKSArICcvJwogCiAgICAgICAgIGZvciBmIGluIGZp\nbGVzOgogICAgICAgICAgICAgZjIsIHJldmlzaW9uID0gdG9vbC5wYXJzZV9kaWZmX3JldmlzaW9u\nKGYub3JpZ0ZpbGUsIGYub3JpZ0luZm8pCg==\n"}}, {"pk": "11", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 3, "dest_detail": "(working copy)", "source_revision": "579", "source_file": "\/trunk\/reviewboard\/reviews\/json.py", "dest_file": "\/trunk\/reviewboard\/reviews\/json.py", "diff_base64": "LS0tIHJldmlld3MvanNvbi5weQkocmV2aXNpb24gNTc5KQorKysgcmV2aWV3cy9qc29uLnB5CSh3\nb3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAKIERPRVNfTk9UX0VYSVNUICAgICAgICAg\nICAgPSBKc29uRXJyb3IoMTAwLCAiT2JqZWN0IGRvZXMgbm90IGV4aXN0IikKIFBFUk1JU1NJT05f\nREVOSUVEICAgICAgICAgPSBKc29uRXJyb3IoMTAxLCAiWW91IGRvbid0IGhhdmUgcGVybWlzc2lv\nbiAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG8gYWNj\nZXNzIHRoaXMiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm\nb3IgdGhpcyIpCiBJTlZBTElEX0FUVFJJQlVURSAgICAgICAgID0gSnNvbkVycm9yKDEwMiwgIklu\ndmFsaWQgYXR0cmlidXRlIikKIE5PVF9MT0dHRURfSU4gICAgICAgICAgICAgPSBKc29uRXJyb3Io\nMTAzLCAiWW91IGFyZSBub3QgbG9nZ2VkIGluIikKIExPR0lOX0ZBSUxFRCAgICAgICAgICAgICAg\nPSBKc29uRXJyb3IoMTA0LCAiVGhlIHVzZXJuYW1lIG9yIHBhc3N3b3JkIHdhcyAiICsKQEAgLTY4\nLDYgKzY4LDIxIEBACiAgICAgcmV0dXJuIF9jaGVja2xvZ2luCiAKIAorZGVmIGpzb25fcGVybWlz\nc2lvbl9yZXF1aXJlZChwZXJtKToKKyAgICBkZWYgX2RlYyh2aWV3X2Z1bmMpOgorICAgICAgICBk\nZWYgX2NoZWNrcGVybWlzc2lvbnMocmVxdWVzdCwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAg\nICAgIGlmIG5vdCByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCgpOgorICAgICAgICAgICAg\nICAgIHJldHVybiBKc29uUmVzcG9uc2VFcnJvcihyZXF1ZXN0LCBOT1RfTE9HR0VEX0lOKQorICAg\nICAgICAgICAgZWxpZiBub3QgcmVxdWVzdC51c2VyLmhhc19wZXJtKHBlcm0pOgorICAgICAgICAg\nICAgICAgIHJldHVybiBKc29uUmVzcG9uc2VFcnJvcihyZXF1ZXN0LCBQRVJNSVNTSU9OX0RFTklF\nRCkKKworICAgICAgICAgICAgcmV0dXJuIHZpZXdfZnVuYyhyZXF1ZXN0LCAqYXJncywgKiprd2Fy\nZ3MpCisKKyAgICAgICAgcmV0dXJuIF9jaGVja3Blcm1pc3Npb25zCisKKyAgICByZXR1cm4gX2Rl\nYworCisKIGNsYXNzIFJldmlld0JvYXJkSlNPTkVuY29kZXIoRGF0ZVRpbWVBd2FyZUpTT05FbmNv\nZGVyKToKICAgICBkZWYgZGVmYXVsdChzZWxmLCBvKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShv\nLCBRdWVyeVNldCk6CkBAIC0zMTUsNiArMzMwLDE3IEBACiAgICAgICAgIHJldHVybiBKc29uUmVz\ncG9uc2VFcnJvcihyZXF1ZXN0LCBJTlZBTElEX0NIQU5HRV9OVU1CRVIpCiAKIAorQGpzb25fcGVy\nbWlzc2lvbl9yZXF1aXJlZCgncmV2aWV3cy5kZWxldGVfcmV2aWV3cmVxdWVzdCcpCitkZWYgcmV2\naWV3X3JlcXVlc3RfZGVsZXRlKHJlcXVlc3QsIHJldmlld19yZXF1ZXN0X2lkKToKKyAgICB0cnk6\nCisgICAgICAgIHJldmlld19yZXF1ZXN0ID0gUmV2aWV3UmVxdWVzdC5vYmplY3RzLmdldChwaz1y\nZXZpZXdfcmVxdWVzdF9pZCkKKyAgICAgICAgcmV2aWV3X3JlcXVlc3QuZGVsZXRlKCkKKyAgICBl\neGNlcHQgUmV2aWV3UmVxdWVzdC5Eb2VzTm90RXhpc3Q6CisgICAgICAgIHJldHVybiBKc29uUmVz\ncG9uc2VFcnJvcihyZXF1ZXN0LCBET0VTX05PVF9FWElTVCkKKworICAgIHJldHVybiBKc29uUmVz\ncG9uc2UocmVxdWVzdCkKKworCiBAanNvbl9sb2dpbl9yZXF1aXJlZAogZGVmIHJldmlld19yZXF1\nZXN0X2xpc3QocmVxdWVzdCwgZnVuYywgKiprd2FyZ3MpOgogICAgIHN0YXR1cyA9IHN0cmluZ190\nb19zdGF0dXMocmVxdWVzdC5HRVQuZ2V0KCdzdGF0dXMnLCAncGVuZGluZycpKQo=\n"}}, {"pk": "12", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 3, "dest_detail": "(working copy)", "source_revision": "575", "source_file": "\/trunk\/reviewboard\/reviews\/urls\/json.py", "dest_file": "\/trunk\/reviewboard\/reviews\/urls\/json.py", "diff_base64": "LS0tIHJldmlld3MvdXJscy9qc29uLnB5CShyZXZpc2lvbiA1NzUpCisrKyByZXZpZXdzL3VybHMv\nanNvbi5weQkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsOSBAQAogICAgIChyJ15yZXZpZXdy\nZXF1ZXN0cy9yZXBvc2l0b3J5LyhQPHJlcG9zaXRvcnlfaWQ+WzAtOV0rKS9jaGFuZ2VudW0vKD9Q\nPGNoYW5nZW51bT5bMC05XSspLyQnLAogICAgICAncmV2aWV3X3JlcXVlc3RfYnlfY2hhbmdlbnVt\nJyksCiAKKyAgICAocidecmV2aWV3cmVxdWVzdHMvKD9QPHJldmlld19yZXF1ZXN0X2lkPlswLTld\nKykvZGVsZXRlLyQnLAorICAgICAncmV2aWV3X3JlcXVlc3RfZGVsZXRlJyksCisKICAgICAocide\ncmV2aWV3cmVxdWVzdHMvKD9QPHJldmlld19yZXF1ZXN0X2lkPlswLTldKykvdXBkYXRlX2Zyb21f\nY2hhbmdlbnVtLyQnLAogICAgICAncmV2aWV3X3JlcXVlc3RfZHJhZnRfdXBkYXRlX2Zyb21fY2hh\nbmdlbnVtJyksCiAK\n"}}, {"pk": "13", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 3, "dest_detail": "(revision 0)", "source_revision": "PRE-CREATION", "source_file": "\/trunk\/reviewboard\/htdocs\/images\/delete.svg", "dest_file": "\/trunk\/reviewboard\/htdocs\/images\/delete.svg", "diff_base64": "LS0tIGh0ZG9jcy9pbWFnZXMvZGVsZXRlLnN2ZwkocmV2aXNpb24gMCkKKysrIGh0ZG9jcy9pbWFn\nZXMvZGVsZXRlLnN2ZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjUgQEAKKzw\/eG1sIHZlcnNp\nb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI\/PgorPCEtLSBDcmVhdGVk\nIHdpdGggSW5rc2NhcGUgKGh0dHA6Ly93d3cuaW5rc2NhcGUub3JnLykgLS0+Cis8c3ZnCisgICB4\nbWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCisgICB4bWxuczpjYz0i\naHR0cDovL3dlYi5yZXNvdXJjZS5vcmcvY2MvIgorICAgeG1sbnM6cmRmPSJodHRwOi8vd3d3Lncz\nLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIgorICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3\nLnczLm9yZy8yMDAwL3N2ZyIKKyAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIK\nKyAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgorICAgeG1sbnM6\nc29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAu\nZHRkIgorICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFj\nZXMvaW5rc2NhcGUiCisgICB3aWR0aD0iMTZweCIKKyAgIGhlaWdodD0iMTZweCIKKyAgIGlkPSJz\ndmcyMTYwIgorICAgc29kaXBvZGk6dmVyc2lvbj0iMC4zMiIKKyAgIGlua3NjYXBlOnZlcnNpb249\nIjAuNDUiCisgICBzb2RpcG9kaTpkb2NiYXNlPSIvaG9tZS9jaGlweDg2L3NyYy9yZXZpZXdib2Fy\nZC9odGRvY3MvaW1hZ2VzIgorICAgc29kaXBvZGk6ZG9jbmFtZT0iZGVsZXRlLnN2ZyIKKyAgIGlu\na3NjYXBlOm91dHB1dF9leHRlbnNpb249Im9yZy5pbmtzY2FwZS5vdXRwdXQuc3ZnLmlua3NjYXBl\nIgorICAgaW5rc2NhcGU6ZXhwb3J0LWZpbGVuYW1lPSIvaG9tZS9jaGlweDg2L3NyYy9yZXZpZXdi\nb2FyZC9odGRvY3MvaW1hZ2VzL2RlbGV0ZS5wbmciCisgICBpbmtzY2FwZTpleHBvcnQteGRwaT0i\nOTAiCisgICBpbmtzY2FwZTpleHBvcnQteWRwaT0iOTAiCisgICBzb2RpcG9kaTptb2RpZmllZD0i\ndHJ1ZSI+CisgIDxkZWZzCisgICAgIGlkPSJkZWZzMjE2MiI+CisgICAgPGxpbmVhckdyYWRpZW50\nCisgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50MzIxMiI+CisgICAgICA8c3RvcAorICAgICAgICAg\nc3R5bGU9InN0b3AtY29sb3I6I2VmMjkyOTtzdG9wLW9wYWNpdHk6MTsiCisgICAgICAgICBvZmZz\nZXQ9IjAiCisgICAgICAgICBpZD0ic3RvcDMyMTQiIC8+CisgICAgICA8c3RvcAorICAgICAgICAg\nc3R5bGU9InN0b3AtY29sb3I6I2VmMTMxMztzdG9wLW9wYWNpdHk6MTsiCisgICAgICAgICBvZmZz\nZXQ9IjEiCisgICAgICAgICBpZD0ic3RvcDMyMTYiIC8+CisgICAgPC9saW5lYXJHcmFkaWVudD4K\nKyAgICA8ZmlsdGVyCisgICAgICAgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIgorICAgICAgIGlk\nPSJmaWx0ZXIzMjAwIj4KKyAgICAgIDxmZUdhdXNzaWFuQmx1cgorICAgICAgICAgaW5rc2NhcGU6\nY29sbGVjdD0iYWx3YXlzIgorICAgICAgICAgc3RkRGV2aWF0aW9uPSIwLjY0MDcxMDg1IgorICAg\nICAgICAgaWQ9ImZlR2F1c3NpYW5CbHVyMzIwMiIgLz4KKyAgICA8L2ZpbHRlcj4KKyAgICA8bGlu\nZWFyR3JhZGllbnQKKyAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCisgICAgICAgeGxp\nbms6aHJlZj0iI2xpbmVhckdyYWRpZW50MzIxMiIKKyAgICAgICBpZD0ibGluZWFyR3JhZGllbnQz\nMjE4IgorICAgICAgIHgxPSI0LjIxODc1IgorICAgICAgIHkxPSI0LjM3NSIKKyAgICAgICB4Mj0i\nMTIuNzAzNDg1IgorICAgICAgIHkyPSIxMi44NTk3MzUiCisgICAgICAgZ3JhZGllbnRVbml0cz0i\ndXNlclNwYWNlT25Vc2UiCisgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjgyNzQx\nNTcsMCwwLDAuODI3NDE1NywxLjM3MjU4NDMsMS40MjExMjM2KSIgLz4KKyAgPC9kZWZzPgorICA8\nc29kaXBvZGk6bmFtZWR2aWV3CisgICAgIGlkPSJiYXNlIgorICAgICBwYWdlY29sb3I9IiNmZmZm\nZmYiCisgICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgorICAgICBib3JkZXJvcGFjaXR5PSIxLjAi\nCisgICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCisgICAgIGlua3NjYXBlOnBhZ2VzaGFk\nb3c9IjIiCisgICAgIGlua3NjYXBlOnpvb209IjQ1LjI1NDgzNCIKKyAgICAgaW5rc2NhcGU6Y3g9\nIjUuMjQyMzk4MyIKKyAgICAgaW5rc2NhcGU6Y3k9IjYuNTMxMjUiCisgICAgIGlua3NjYXBlOmN1\ncnJlbnQtbGF5ZXI9ImxheWVyMSIKKyAgICAgc2hvd2dyaWQ9ImZhbHNlIgorICAgICBpbmtzY2Fw\nZTpncmlkLWJib3g9InRydWUiCisgICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIKKyAg\nICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxNjAwIgorICAgICBpbmtzY2FwZTp3aW5kb3ctaGVp\nZ2h0PSIxMTI5IgorICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKKyAgICAgaW5rc2NhcGU6d2lu\nZG93LXk9IjQ3IiAvPgorICA8bWV0YWRhdGEKKyAgICAgaWQ9Im1ldGFkYXRhMjE2NSI+CisgICAg\nPHJkZjpSREY+CisgICAgICA8Y2M6V29yaworICAgICAgICAgcmRmOmFib3V0PSIiPgorICAgICAg\nICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KKyAgICAgICAgPGRjOnR5cGUK\nKyAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3Rp\nbGxJbWFnZSIgLz4KKyAgICAgIDwvY2M6V29yaz4KKyAgICA8L3JkZjpSREY+CisgIDwvbWV0YWRh\ndGE+CisgIDxnCisgICAgIGlkPSJsYXllcjEiCisgICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAx\nIgorICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIj4KKyAgICA8cGF0aAorICAgICAgIGlk\nPSJwYXRoMzE1NCIKKyAgICAgICBkPSJNIDMuODEyNSwxLjk2ODc1IEwgMS42ODc1LDQuMDkzNzUg\nTCA1LjkzNzUsOC4zMTI1IEwgMS42ODc1LDEyLjU2MjUgTCAzLjgxMjUsMTQuNjg3NSBMIDguMDYy\nNSwxMC40Mzc1IEwgMTIuMjgxMjUsMTQuNjg3NSBMIDE0LjQwNjI1LDEyLjU2MjUgTCAxMC4xODc1\nLDguMzEyNSBMIDE0LjQwNjI1LDQuMDkzNzUgTCAxMi4yODEyNSwxLjk2ODc1IEwgOC4wNjI1LDYu\nMTg3NSBMIDMuODEyNSwxLjk2ODc1IHogIgorICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuNjMxODY4\nMTM7ZmlsbDojMmUzNDM2O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZToj\nMmUzNDM2O3N0cm9rZS13aWR0aDoxO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2lu\nOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1k\nYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MTtmaWx0ZXI6dXJsKCNmaWx0ZXIzMjAwKSIKKyAg\nICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjgyNzQxNTcsMCwwLDAuODI3NDE1NywxLjM3MjU4NDMs\nMS40MjExMjM2KSIgLz4KKyAgICA8cGF0aAorICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDp1\ncmwoI2xpbmVhckdyYWRpZW50MzIxOCk7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87\nc3Ryb2tlOiNhNDAwMDA7c3Ryb2tlLXdpZHRoOjAuODI3NDE1NztzdHJva2UtbGluZWNhcDpidXR0\nO3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJy\nYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiCisgICAgICAgZD0i\nTSA0LjM3MTk2NjMsMi44OTQ5NTc5IEwgMi42MTM3MDc5LDQuNjUzMjE2MyBMIDYuMTMwMjI0Nyw4\nLjE0Mzg3NjQgTCAyLjYxMzcwNzksMTEuNjYwMzkzIEwgNC4zNzE5NjYzLDEzLjQxODY1MiBMIDcu\nODg4NDgzMSw5LjkwMjEzNDggTCAxMS4zNzkxNDMsMTMuNDE4NjUyIEwgMTMuMTM3NDAyLDExLjY2\nMDM5MyBMIDkuNjQ2NzQxNiw4LjE0Mzg3NjQgTCAxMy4xMzc0MDIsNC42NTMyMTYzIEwgMTEuMzc5\nMTQzLDIuODk0OTU3OSBMIDcuODg4NDgzMSw2LjM4NTYxOCBMIDQuMzcxOTY2MywyLjg5NDk1Nzkg\neiAiCisgICAgICAgaWQ9InJlY3QyMTY4IgorICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI5\nMCIKKyAgICAgICBpbmtzY2FwZTpleHBvcnQteWRwaT0iOTAiIC8+CisgICAgPHJlY3QKKyAgICAg\nICBzdHlsZT0ib3BhY2l0eTowLjMwNzY5MjM0O2ZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtm\naWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTtzdHJva2UtbGluZWNh\ncDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1k\nYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiCisgICAg\nICAgaWQ9InJlY3QzMTQ4IgorICAgICAgIHdpZHRoPSI1LjAwNDczNjkiCisgICAgICAgaGVpZ2h0\nPSIwLjgyNzQxNTk0IgorICAgICAgIHg9Ii01Ljk4OTA2NTYiCisgICAgICAgeT0iMTAuNTA1ODc5\nIgorICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuNzA3MTA2OCwtMC43MDcxMDY4LDAuNzA3MTA2\nOCwwLjcwNzEwNjgsMCwwKSIgLz4KKyAgICA8cmVjdAorICAgICAgIHN0eWxlPSJvcGFjaXR5OjAu\nMzA3NjkyMzQ7ZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0\ncm9rZTpub25lO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVq\nb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9r\nZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MSIKKyAgICAgICBpZD0icmVjdDMxNTAiCisg\nICAgICAgd2lkdGg9IjEuNjU0ODMxNCIKKyAgICAgICBoZWlnaHQ9IjAuODI3NDE1ODIiCisgICAg\nICAgeD0iLTEuMDI0OTkwMyIKKyAgICAgICB5PSI1LjUxMzI1NjUiCisgICAgICAgdHJhbnNmb3Jt\nPSJtYXRyaXgoMC43MDcxMDY4LC0wLjcwNzEwNjgsMC43MDcxMDY4LDAuNzA3MTA2OCwwLDApIiAv\nPgorICAgIDxyZWN0CisgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC43MDcxMDY4LC0wLjcwNzEw\nNjgsMC43MDcxMDY4LDAuNzA3MTA2OCwwLDApIgorICAgICAgIHk9IjEwLjQ4MDAyMyIKKyAgICAg\nICB4PSIwLjU5MjIyNTc5IgorICAgICAgIGhlaWdodD0iMC44Mjc0MTU5NCIKKyAgICAgICB3aWR0\naD0iNS4wMDQ3MzY5IgorICAgICAgIGlkPSJyZWN0MzE1MiIKKyAgICAgICBzdHlsZT0ib3BhY2l0\neTowLjMwNzY5MjM0O2ZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVy\nbztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1s\naW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtz\ndHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiIC8+CisgIDwvZz4KKzwvc3ZnPgo=\n"}}, {"pk": "14", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 3, "dest_detail": "(working copy)", "source_revision": "578", "source_file": "\/trunk\/reviewboard\/htdocs\/scripts\/reviews.js", "dest_file": "\/trunk\/reviewboard\/htdocs\/scripts\/reviews.js", "diff_base64": "LS0tIGh0ZG9jcy9zY3JpcHRzL3Jldmlld3MuanMJKHJldmlzaW9uIDU3OCkKKysrIGh0ZG9jcy9z\nY3JpcHRzL3Jldmlld3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw5IEBACiB2YXIgZGgg\nPSBZQUhPTy5leHQuRG9tSGVscGVyOwogdmFyIGNvbW1lbnRUZW1wbGF0ZSA9IG51bGw7CiAKKy8v\nIERpYWxvZ3MKK3ZhciBnRGVsZXRlUmV2aWV3UmVxdWVzdERsZyA9IG51bGw7CisKIC8vIFN0YXRl\nIHZhcmlhYmxlcwogdmFyIGdDb21tZW50U2VjdGlvbnMgPSB7fTsKIHZhciBnWW91ckNvbW1lbnRz\nID0ge307CkBAIC0xMzEsNyArMTM0LDcgQEAKIAogCWRoLmFwcGVuZChnZXRFbCgnZXJyb3InKS5k\nb20sIHsKIAkJdGFnOiAnZGl2JywgaWQ6IGlkLCBjaGlsZHJlbjogWwotCQkJe3RhZzogJ2gxJywg\naHRtbDogJ0Vycm9yOid9LAorCQkJe3RhZzogJ2gxJywgaHRtbDogJ0Vycm9yOiAnfSwKIAkJCXto\ndG1sOiB0ZXh0fSwKIAkJCXt0YWc6ICdpbnB1dCcsIHR5cGU6ICdzdWJtaXQnLAogCQkJIHZhbHVl\nOiAnRGlzbWlzcycsIG9uQ2xpY2s6IGNsb3NlSGFuZGxlcn0KQEAgLTE0Miw3ICsxNDUsNyBAQAog\nCiBmdW5jdGlvbiBzaG93U2VydmVyRXJyb3Ioc3BlY2lmaWMpIHsKIAlzaG93RXJyb3Ioc3BlY2lm\naWMgKwotCSAgICAgICAgICAiIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuIElmIHRoaXMgY29udGlu\ndWVzIHRvIiArCisJICAgICAgICAgICIuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuIElmIHRoaXMg\nY29udGludWVzIHRvIiArCiAJICAgICAgICAgICIgaGFwcGVuLCBwbGVhc2UgcmVwb3J0IGl0IHRv\nIHlvdXIgYWRtaW5pc3RyYXRvciIpOwogfQogCkBAIC00MjYsMyArNDI5LDM0IEBACiAJCXdpbmRv\ndy5sb2NhdGlvbiA9IG5vcm1hbGl6ZVVSTCh3aW5kb3cubG9jYXRpb24uaHJlZikgKyAiL3B1Ymxp\nc2gvIjsKIAl9CiB9CisKK2Z1bmN0aW9uIGRlbGV0ZVJldmlld1JlcXVlc3QoKSB7CisJaWYgKCFn\nRGVsZXRlUmV2aWV3UmVxdWVzdERsZykgeworCQlnRGVsZXRlUmV2aWV3UmVxdWVzdERsZyA9IG5l\ndyBSQi5kaWFsb2dzLk1lc3NhZ2VEaWFsb2coeworCQkJdGl0bGU6ICJDb25maXJtIERlbGV0aW9u\nIiwKKwkJCXN1bW1hcnk6ICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgcmV2\naWV3IHJlcXVlc3Q\/IiwKKwkJCWRlc2NyaXB0aW9uOiAiVGhpcyBhY3Rpb24gaXMgaXJyZXZlcnNp\nYmxlLiIsCisJCQlidXR0b25zOiBbeworCQkJCXRleHQ6ICJEZWxldGUiLAorCQkJCWNiOiBvbkRl\nbGV0ZVJldmlld1JlcXVlc3RDb25maXJtZWQKKwkJCX0sIHsKKwkJCQl0ZXh0OiAiQ2FuY2VsIiwK\nKwkJCQlkZWZhdWx0OiB0cnVlCisJCQl9XQorCQl9KTsKKwl9CisKKwlnRGVsZXRlUmV2aWV3UmVx\ndWVzdERsZy5zaG93KGdldEVsKCJkZWxldGUtcmV2aWV3LXJlcXVlc3QtbGluayIpKTsKK30KKwor\nZnVuY3Rpb24gb25EZWxldGVSZXZpZXdSZXF1ZXN0Q29uZmlybWVkKCkgeworCWFzeW5jSnNvblJl\ncXVlc3QoIlBPU1QiLCBnZXRBcGlQYXRoKCkgKyAnL2RlbGV0ZS8nLCB7CisJCXN1Y2Nlc3M6IGZ1\nbmN0aW9uKHJzcCkgeworCQkJd2luZG93LmxvY2F0aW9uID0gIi8iOyAvLyBYWFggTmVlZCBhIGJl\ndHRlciBwYXRoLgorCQl9LAorCQlmYWlsdXJlOiBmdW5jdGlvbihlcnJtc2cpIHsKKwkJCXNob3dT\nZXJ2ZXJFcnJvcigiRGVsZXRpbmcgdGhlIHJldmlldyByZXF1ZXN0IGhhcyBmYWlsZWQgIiArCisJ\nCQkgICAgICAgICAgICAgICAgImR1ZSB0byBhIHNlcnZlciBlcnJvcjogIiArIGVycm1zZyk7CisJ\nCX0KKwl9KTsKK30K\n"}}, {"pk": "15", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 3, "dest_detail": "(revision 0)", "source_revision": "PRE-CREATION", "source_file": "\/trunk\/reviewboard\/htdocs\/scripts\/rb\/dialogs.js", "dest_file": "\/trunk\/reviewboard\/htdocs\/scripts\/rb\/dialogs.js", "diff_base64": "LS0tIGh0ZG9jcy9zY3JpcHRzL3JiL2RpYWxvZ3MuanMJKHJldmlzaW9uIDApCisrKyBodGRvY3Mv\nc2NyaXB0cy9yYi9kaWFsb2dzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACitSQi5k\naWFsb2dzID0ge30KKworUkIuZGlhbG9ncy5NZXNzYWdlRGlhbG9nID0gZnVuY3Rpb24oY29uZmln\nKSB7CisgIHRoaXMuYnV0dG9ubGlzdCA9IGNvbmZpZy5idXR0b25zOworICBjb25maWcuYnV0dG9u\ncyA9IG51bGw7CisKKwlZQUhPTy5leHQudXRpbC5Db25maWcuYXBwbHkodGhpcywgY29uZmlnKTsK\nKworICB2YXIgZGggPSBZQUhPTy5leHQuRG9tSGVscGVyOworCisgIHRoaXMuZWwgPSBkaC5hcHBl\nbmQoZG9jdW1lbnQuYm9keSwgeworICAgIHRhZzogJ2RpdicsCisgICAgc3R5bGU6ICd2aXNpYmls\naXR5OiBoaWRkZW47IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7JywKKyAgICBjaGlsZHJl\nbjogW3sKKyAgICAgIHRhZzogJ2RpdicsCisgICAgICBjbHM6ICd5ZGxnLWhkJywKKyAgICAgIGh0\nbWw6IHRoaXMudGl0bGUKKyAgICB9LCB7CisgICAgICB0YWc6ICdkaXYnLAorICAgICAgY2xzOiAn\neWRsZy1iZCcsCisgICAgICBjaGlsZHJlbjogW3sKKyAgICAgICAgdGFnOiAnaDEnLAorICAgICAg\nICBodG1sOiB0aGlzLnN1bW1hcnkKKyAgICAgIH0sIHsKKyAgICAgICAgdGFnOiAncCcsCisgICAg\nICAgIGh0bWw6IHRoaXMuZGVzY3JpcHRpb24KKyAgICAgIH1dCisgICAgfV0KKyAgfSwgdHJ1ZSk7\nCisKKyAgUkIuZGlhbG9ncy5NZXNzYWdlRGlhbG9nLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2Fs\nbCh0aGlzLCB0aGlzLmVsLCB7CisgICAgc2hhZG93OiB0cnVlLAorICAgIHdpZHRoOiB0aGlzLndp\nZHRoIHx8IDM1MCwKKyAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0IHx8IDIwMCwKKyAgICBtaW5XaWR0\naDogdGhpcy5taW5XaWR0aCB8fCAzNTAsCisgICAgbWluSGVpZ2h0OiB0aGlzLm1pbkhlaWdodCB8\nfCAyMDAsCisgICAgcHJveHlEcmFnOiB0cnVlCisgIH0pOworCisgIHRoaXMuYWRkS2V5TGlzdGVu\nZXIoMjcsIHRoaXMuaGlkZSwgdGhpcyk7CisKKyAgaWYgKHRoaXMuYnV0dG9ubGlzdCkgeworICAg\nIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5idXR0b25saXN0Lmxlbmd0aDsgaSsrKSB7CisgICAg\nICB2YXIgYnV0dG9uID0gdGhpcy5hZGRCdXR0b24odGhpcy5idXR0b25saXN0W2ldLnRleHQsIGZ1\nbmN0aW9uKGNiKSB7CisgICAgICAgIHRoaXMuaGlkZSgpOworCisgICAgICAgIGlmIChjYikgewor\nICAgICAgICAgIGNiKCk7CisgICAgICAgIH0KKyAgICAgIH0uY3JlYXRlRGVsZWdhdGUodGhpcywg\nW3RoaXMuYnV0dG9ubGlzdFtpXS5jYl0pKTsKKworICAgICAgaWYgKHRoaXMuYnV0dG9ubGlzdFtp\nXS5pc19kZWZhdWx0KSB7CisgICAgICAgIHRoaXMuc2V0RGVmYXVsdEJ1dHRvbihidXR0b24pOwor\nICAgICAgfQorICAgIH0KKyAgfQorfQorCitZQUhPTy5leHRlbmRYKFJCLmRpYWxvZ3MuTWVzc2Fn\nZURpYWxvZywgWUFIT08uZXh0LkJhc2ljRGlhbG9nKTsK\n"}}, {"pk": "16", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 3, "dest_detail": "(working copy)", "source_revision": "575", "source_file": "\/trunk\/reviewboard\/templates\/reviews\/review_request_box.html", "dest_file": "\/trunk\/reviewboard\/templates\/reviews\/review_request_box.html", "diff_base64": "LS0tIHRlbXBsYXRlcy9yZXZpZXdzL3Jldmlld19yZXF1ZXN0X2JveC5odG1sCShyZXZpc2lvbiA1\nNzUpCisrKyB0ZW1wbGF0ZXMvcmV2aWV3cy9yZXZpZXdfcmVxdWVzdF9ib3guaHRtbAkod29ya2lu\nZyBjb3B5KQpAQCAtNzksNiArNzksOSBAQAogIHslIGVuZGlmICV9CiA8L2Rpdj4KIDx1bCBjbGFz\ncz0iY29udHJvbHMiPgoreyUgaWYgcGVybXMucmV2aWV3cy5kZWxldGVfcmV2aWV3cmVxdWVzdCAl\nfQorIDxsaT48YSBpZD0iZGVsZXRlLXJldmlldy1yZXF1ZXN0LWxpbmsiIGhyZWY9IiMiIG9uQ2xp\nY2s9ImRlbGV0ZVJldmlld1JlcXVlc3QoKTsiPjxpbWcgc3JjPSIvaW1hZ2VzL2RlbGV0ZS5wbmci\nIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgYm9yZGVyPSIwIiBhbHQ9IiIgLz4gRGVsZXRlPC9hPjwv\nbGk+Cit7JSBlbmRpZiAlfQogeyUgaWZlcXVhbCByZXF1ZXN0LnVzZXIgcmV2aWV3X3JlcXVlc3Qu\nc3VibWl0dGVyICV9CiB7JSAgaWYgcmV2aWV3X3JlcXVlc3RfZGV0YWlscy5wdWJsaWMgJX0KIHsl\nICAgIGlmZXF1YWwgcmV2aWV3X3JlcXVlc3RfZGV0YWlscy5zdGF0dXMgJ1AnICV9Cg==\n"}}, {"pk": "17", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 3, "dest_detail": "(working copy)", "source_revision": "575", "source_file": "\/trunk\/reviewboard\/templates\/reviews\/review_detail.html", "dest_file": "\/trunk\/reviewboard\/templates\/reviews\/review_detail.html", "diff_base64": "LS0tIHRlbXBsYXRlcy9yZXZpZXdzL3Jldmlld19kZXRhaWwuaHRtbAkocmV2aXNpb24gNTc1KQor\nKysgdGVtcGxhdGVzL3Jldmlld3MvcmV2aWV3X2RldGFpbC5odG1sCSh3b3JraW5nIGNvcHkpCkBA\nIC03LDEzICs3LDE2IEBACiB7JSBibG9jayBleHRyYWhlYWQgJX0KIDxsaW5rIHJlbD0ic3R5bGVz\naGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii9jc3MvZGlmZnZpZXdlci5jc3MiIC8+CiA8bGlu\nayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIvY3NzL3Jldmlld3MuY3Nz\nIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL2Nzcy95\ndWktdWkuY3NzIiAvPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3Njcmlw\ndHMveXVpL3lhaG9vL3lhaG9vLW1pbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHR5cGU9InRleHQv\namF2YXNjcmlwdCIgc3JjPSIvc2NyaXB0cy95dWkvYW5pbWF0aW9uL2FuaW1hdGlvbi1taW4uanMi\nPjwvc2NyaXB0PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3NjcmlwdHMv\neXVpL2Nvbm5lY3Rpb24vY29ubmVjdGlvbi1taW4uanMiPjwvc2NyaXB0PgogPHNjcmlwdCB0eXBl\nPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3NjcmlwdHMveXVpL2V2ZW50L2V2ZW50LW1pbi5qcyI+\nPC9zY3JpcHQ+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvc2NyaXB0cy95\ndWkvZG9tL2RvbS1taW4uanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp\ncHQiIHNyYz0iL3NjcmlwdHMveXVpL3V0aWxpdGllcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0Pgog\nPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3NjcmlwdHMveXVpLWV4dC95dWkt\nZXh0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9z\nY3JpcHRzL3JiL2NvcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp\ncHQiIHNyYz0iL3NjcmlwdHMvcmIvZGlhbG9ncy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHR5cGU9\nInRleHQvamF2YXNjcmlwdCIgc3JjPSIvc2NyaXB0cy9yYi93aWRnZXRzLmpzIj48L3NjcmlwdD4K\nIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9zY3JpcHRzL3Jldmlld3MuanMi\nPjwvc2NyaXB0PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo=\n"}}, {"pk": "18", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 4, "dest_detail": "(revision 0)", "source_revision": "PRE-CREATION", "source_file": "\/trunk\/reviewboard\/reviews\/tests.py", "dest_file": "\/trunk\/reviewboard\/reviews\/tests.py", "diff_base64": "LS0tIHJldmlld3MvdGVzdHMucHkJKHJldmlzaW9uIDApCisrKyByZXZpZXdzL3Rlc3RzLnB5CShy\nZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNyBAQAoraW1wb3J0IG9zCitpbXBvcnQgcmUKKworZnJv\nbSBkamFuZ28uY29uZiBpbXBvcnQgc2V0dGluZ3MKK2Zyb20gZGphbmdvLmNvbnRyaWIuYXV0aC5t\nb2RlbHMgaW1wb3J0IFVzZXIKK2Zyb20gZGphbmdvLmNvcmUgaW1wb3J0IG1haWwKK2Zyb20gZGph\nbmdvLnRlc3QgaW1wb3J0IFRlc3RDYXNlCisKK2Zyb20gcmV2aWV3Ym9hcmQucmV2aWV3cy5lbWFp\nbCBpbXBvcnQgZ2V0X2VtYWlsX2FkZHJlc3NfZm9yX3VzZXIsIFwKKyAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgZ2V0X2VtYWlsX2FkZHJlc3NfZm9yX2dyb3VwLCBcCisgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxfcmV2aWV3X3JlcXVlc3QsIG1h\naWxfcmV2aWV3LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxf\ncmVwbHksIG1haWxfZGlmZl91cGRhdGUKK2Zyb20gcmV2aWV3Ym9hcmQucmV2aWV3cy5tb2RlbHMg\naW1wb3J0IEdyb3VwLCBSZXZpZXdSZXF1ZXN0LCBSZXZpZXcKKworCitjbGFzcyBFbWFpbFRlc3Rz\nKFRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0cyB0aGUgZS1tYWlsIHN1cHBvcnQuCisgICAg\nIiIiCisgICAgZml4dHVyZXMgPSBbJ2VtYWlsX3Rlc3QnXQorCisgICAgZGVmIHNldFVwKHNlbGYp\nOgorICAgICAgICBzZXR0aW5ncy5TRU5EX1JFVklFV19NQUlMID0gVHJ1ZQorICAgICAgICBtYWls\nLm91dGJveCA9IFtdCisKKyAgICBkZWYgdGVzdE5ld1Jldmlld1JlcXVlc3RFbWFpbChzZWxmKToK\nKyAgICAgICAgIiIiCisgICAgICAgIFRlc3Qgc2VuZGluZyBhbiBlLW1haWwgd2hlbiBjcmVhdGlu\nZyBhIG5ldyByZXZpZXcgcmVxdWVzdC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldmlld19yZXF1\nZXN0ID0gUmV2aWV3UmVxdWVzdC5vYmplY3RzLmdldChzdWJtaXR0ZXJfX3VzZXJuYW1lPSJkb2Mi\nKQorICAgICAgICBtYWlsX3Jldmlld19yZXF1ZXN0KHJldmlld19yZXF1ZXN0LnN1Ym1pdHRlciwg\ncmV2aWV3X3JlcXVlc3QpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWFpbC5vdXRi\nb3gpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWwub3V0Ym94WzBdLnN1YmplY3Qs\nCisgICAgICAgICAgICAgICAgICAgICAgICAgIlJldmlldyBSZXF1ZXN0OiBNYWtlIGNsZWFuZWQg\nZGF0YSB3b3JrIHdpdGggIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9sZGVyIGFuZCBu\nZXdlciBuZXdmb3JtcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0VmFsaWRSZWNpcGllbnRzKFsiZ3J1\nbXB5IiwgImRvYyJdLCBbInJldmlld2JvYXJkIl0pCisKKyAgICBkZWYgdGVzdFJldmlld0VtYWls\nKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBzZW5kaW5nIGFuIGUtbWFpbCB3aGVu\nIHJlcGx5aW5nIHRvIGEgcmV2aWV3IHJlcXVlc3QuCisgICAgICAgICIiIgorICAgICAgICByZXZp\nZXcgPSBSZXZpZXcub2JqZWN0cy5nZXQocGs9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy\nZXZpZXcudXNlci51c2VybmFtZSwgImdydW1weSIpCisgICAgICAgIG1haWxfcmV2aWV3KHJldmll\ndy51c2VyLCByZXZpZXcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWFpbC5vdXRi\nb3gpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWwub3V0Ym94WzBdLnN1YmplY3Qs\nCisgICAgICAgICAgICAgICAgICAgICAgICAgIlJlOiBSZXZpZXcgUmVxdWVzdDogTWFrZSBjbGVh\nbmVkIGRhdGEgd29yayB3aXRoICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICJvbGRlciBh\nbmQgbmV3ZXIgbmV3Zm9ybXMiKQorICAgICAgICBzZWxmLmFzc2VydFZhbGlkUmVjaXBpZW50cyhb\nImdydW1weSIsICJkb2MiXSwgWyJyZXZpZXdib2FyZCJdKQorCisgICAgZGVmIHRlc3RSZXZpZXdS\nZXBseUVtYWlsKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBzZW5kaW5nIGFuIGUt\nbWFpbCB3aGVuIHJlcGx5aW5nIHRvIGEgcmV2aWV3LgorICAgICAgICAiIiIKKyAgICAgICAgYmFz\nZV9yZXZpZXcgPSBSZXZpZXcub2JqZWN0cy5nZXQocGs9MSkKKyAgICAgICAgcmVwbHkgPSBSZXZp\nZXcub2JqZWN0cy5nZXQoYmFzZV9yZXBseV90bz1iYXNlX3JldmlldywKKyAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgdXNlcl9fdXNlcm5hbWU9ImRvcGV5IikKKyAgICAgICAgbWFp\nbF9yZXBseShyZXBseS51c2VyLCByZXBseSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl\nbihtYWlsLm91dGJveCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbC5vdXRib3hb\nMF0uc3ViamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiUmU6IFJldmlldyBSZXF1ZXN0\nOiBNYWtlIGNsZWFuZWQgZGF0YSB3b3JrIHdpdGggIiArCisgICAgICAgICAgICAgICAgICAgICAg\nICAgIm9sZGVyIGFuZCBuZXdlciBuZXdmb3JtcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0VmFsaWRS\nZWNpcGllbnRzKFsiZ3J1bXB5IiwgImRvYyIsICJkb3BleSJdLCBbInJldmlld2JvYXJkIl0pCisK\nKyAgICBkZWYgdGVzdFVwZGF0ZVJldmlld1JlcXVlc3RFbWFpbChzZWxmKToKKyAgICAgICAgIiIi\nCisgICAgICAgIFRlc3Qgc2VuZGluZyBhbiBlLW1haWwgd2hlbiB1cGRhdGluZyBhIHJldmlldyBy\nZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmV2aWV3X3JlcXVlc3QgPSBSZXZpZXdSZXF1\nZXN0Lm9iamVjdHMuZ2V0KHN1Ym1pdHRlcl9fdXNlcm5hbWU9ImRvYyIpCisgICAgICAgIHJldmll\nd19yZXF1ZXN0LmVtYWlsX21lc3NhZ2VfaWQgPSAianVuayIKKyAgICAgICAgbWFpbF9yZXZpZXdf\ncmVxdWVzdChyZXZpZXdfcmVxdWVzdC5zdWJtaXR0ZXIsIHJldmlld19yZXF1ZXN0KQorCisgICAg\nICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWwub3V0Ym94KSwgMSkKKyAgICAgICAgc2VsZi5h\nc3NlcnRFcXVhbChtYWlsLm91dGJveFswXS5zdWJqZWN0LAorICAgICAgICAgICAgICAgICAgICAg\nICAgICJSZTogUmV2aWV3IFJlcXVlc3Q6IE1ha2UgY2xlYW5lZCBkYXRhIHdvcmsgd2l0aCAiICsK\nKyAgICAgICAgICAgICAgICAgICAgICAgICAib2xkZXIgYW5kIG5ld2VyIG5ld2Zvcm1zIikKKyAg\nICAgICAgc2VsZi5hc3NlcnRWYWxpZFJlY2lwaWVudHMoWyJncnVtcHkiLCAiZG9jIiwgImRvcGV5\nIl0sIFsicmV2aWV3Ym9hcmQiXSkKKworICAgIGRlZiB0ZXN0RGlmZlVwZGF0ZUVtYWlsKHNlbGYp\nOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBzZW5kaW5nIGFuIGUtbWFpbCB3aGVuIHJlcGx5\naW5nIHRvIGEgcmV2aWV3LgorICAgICAgICAiIiIKKyAgICAgICAgYmFzZV9yZXZpZXcgPSBSZXZp\nZXcub2JqZWN0cy5nZXQocGs9MSkKKyAgICAgICAgcmVwbHkgPSBSZXZpZXcub2JqZWN0cy5nZXQo\nYmFzZV9yZXBseV90bz1iYXNlX3JldmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgdXNlcl9fdXNlcm5hbWU9ImRvcGV5IikKKyAgICAgICAgbWFpbF9yZXBseShyZXBseS51\nc2VyLCByZXBseSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsLm91dGJveCks\nIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbC5vdXRib3hbMF0uc3ViamVjdCwKKyAg\nICAgICAgICAgICAgICAgICAgICAgICAiUmU6IFJldmlldyBSZXF1ZXN0OiBNYWtlIGNsZWFuZWQg\nZGF0YSB3b3JrIHdpdGggIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9sZGVyIGFuZCBu\nZXdlciBuZXdmb3JtcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0VmFsaWRSZWNpcGllbnRzKFsiZ3J1\nbXB5IiwgImRvYyIsICJkb3BleSJdLCBbInJldmlld2JvYXJkIl0pCisKKyAgICBkZWYgYXNzZXJ0\nVmFsaWRSZWNpcGllbnRzKHNlbGYsIHVzZXJfbGlzdCwgZ3JvdXBfbGlzdCk6CisgICAgICAgIHJl\nY2lwaWVudF9saXN0ID0gcmUuc3BsaXQociIsXHMqIiwgbWFpbC5vdXRib3hbMF0udG8pCisgICAg\nICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlY2lwaWVudF9saXN0KSwgbGVuKHVzZXJfbGlzdCkg\nKyBsZW4oZ3JvdXBfbGlzdCkpCisKKyAgICAgICAgZm9yIHVzZXIgaW4gdXNlcl9saXN0OgorICAg\nICAgICAgICAgc2VsZi5hc3NlcnRfKGdldF9lbWFpbF9hZGRyZXNzX2Zvcl91c2VyKAorICAgICAg\nICAgICAgICAgIFVzZXIub2JqZWN0cy5nZXQodXNlcm5hbWU9dXNlcikpIGluIHJlY2lwaWVudF9s\naXN0KQorCisgICAgICAgIGZvciBncm91cCBpbiBncm91cF9saXN0OgorICAgICAgICAgICAgc2Vs\nZi5hc3NlcnRfKGdldF9lbWFpbF9hZGRyZXNzX2Zvcl9ncm91cCgKKyAgICAgICAgICAgICAgICBH\ncm91cC5vYmplY3RzLmdldChuYW1lPWdyb3VwKSkgaW4gcmVjaXBpZW50X2xpc3QpCg==\n"}}, {"pk": "19", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 4, "dest_detail": "(working copy)", "source_revision": "639", "source_file": "\/trunk\/reviewboard\/reviews\/email.py", "dest_file": "\/trunk\/reviewboard\/reviews\/email.py", "diff_base64": "LS0tIHJldmlld3MvZW1haWwucHkJKHJldmlzaW9uIDYzOSkKKysrIHJldmlld3MvZW1haWwucHkJ\nKHdvcmtpbmcgY29weSkKQEAgLTEsNzQgKzEsMTA2IEBACi1pbXBvcnQgdGltZQotaW1wb3J0IHNt\ndHBsaWIsIHJmYzgyMgotaW1wb3J0IHNvY2tldAotaW1wb3J0IHJhbmRvbQogZnJvbSBkYXRldGlt\nZSBpbXBvcnQgZGF0ZXRpbWUKIAogZnJvbSBkamFuZ28uY29uZiBpbXBvcnQgc2V0dGluZ3MKIGZy\nb20gZGphbmdvLmNvbnRyaWIuc2l0ZXMubW9kZWxzIGltcG9ydCBTaXRlCi1mcm9tIGRqYW5nby5j\nb3JlLm1haWwgaW1wb3J0IFNhZmVNSU1FVGV4dAorZnJvbSBkamFuZ28uY29yZS5tYWlsIGltcG9y\ndCBFbWFpbE1lc3NhZ2UKIGZyb20gZGphbmdvLnRlbXBsYXRlLmxvYWRlciBpbXBvcnQgcmVuZGVy\nX3RvX3N0cmluZwogCiBmcm9tIHJldmlld2JvYXJkLnJldmlld3MubW9kZWxzIGltcG9ydCBSZXZp\nZXdSZXF1ZXN0LCBSZXZpZXcKIAotRE5TX05BTUUgPSBzb2NrZXQuZ2V0ZnFkbigpCitkZWYgZ2V0\nX2VtYWlsX2FkZHJlc3NfZm9yX3VzZXIodSk6CisgICAgaWYgbm90IHUuZ2V0X2Z1bGxfbmFtZSgp\nOgorICAgICAgICByZXR1cm4gdXNlci5lbWFpbAorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAn\nJXMgPCVzPicgJSAodS5nZXRfZnVsbF9uYW1lKCksIHUuZW1haWwpCiAKKworZGVmIGdldF9lbWFp\nbF9hZGRyZXNzX2Zvcl9ncm91cChnKToKKyAgICByZXR1cm4gJyVzIDwlcz4nICUgKGcuZGlzcGxh\neV9uYW1lLCBnLm1haWxpbmdfbGlzdCkKKworCitjbGFzcyBTcGlmZnlFbWFpbE1lc3NhZ2UoRW1h\naWxNZXNzYWdlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3ViamVjdCwgYm9keSwgZnJvbV9l\nbWFpbCwgdG8sIGluX3JlcGx5X3RvKToKKyAgICAgICAgRW1haWxNZXNzYWdlLl9faW5pdF9fKHNl\nbGYsIHN1YmplY3QsIGJvZHksIGZyb21fZW1haWwsIHRvKQorICAgICAgICBzZWxmLmluX3JlcGx5\nX3RvID0gaW5fcmVwbHlfdG8KKyAgICAgICAgc2VsZi5tZXNzYWdlX2lkID0gTm9uZQorCisgICAg\nZGVmIG1lc3NhZ2Uoc2VsZik6CisgICAgICAgIG1zZyA9IHN1cGVyKEVtYWlsTWVzc2FnZSwgc2Vs\nZikubWVzc2FnZSgpCisKKyAgICAgICAgaWYgc2VsZi5pbl9yZXBseV90bzoKKyAgICAgICAgICAg\nIG1zZ1snSW4tUmVwbHktVG8nXSA9IGluX3JlcGx5X3RvCisgICAgICAgICAgICBtc2dbJ1JlZmVy\nZW5jZXMnXSA9IGluX3JlcGx5X3RvCisKKyAgICAgICAgc2VsZi5tZXNzYWdlX2lkID0gbXNnWydN\nZXNzYWdlLUlEJ10KKworICAgICAgICByZXR1cm4gbXNnCisKKwogZGVmIHNlbmRfcmV2aWV3X21h\naWwodXNlciwgcmV2aWV3X3JlcXVlc3QsIHN1YmplY3QsIGluX3JlcGx5X3RvLAotICAgICAgICAg\nICAgICAgICAgICAgdGVtcGxhdGVfbmFtZSwgY29udGV4dD17fSk6CisgICAgICAgICAgICAgICAg\nICAgICBleHRyYV9yZWNpcGllbnRzLCB0ZW1wbGF0ZV9uYW1lLCBjb250ZXh0PXt9KToKICAgICAi\nIiIKICAgICBGb3JtYXRzIGFuZCBzZW5kcyBhbiBlLW1haWwgb3V0IHdpdGggdGhlIGN1cnJlbnQg\nZG9tYWluIGFuZCByZXZpZXcgcmVxdWVzdAogICAgIGJlaW5nIGFkZGVkIHRvIHRoZSB0ZW1wbGF0\nZSBjb250ZXh0LiBSZXR1cm5zIHRoZSByZXN1bHRpbmcgbWVzc2FnZSBJRC4KICAgICAiIiIKICAg\nICBjdXJyZW50X3NpdGUgPSBTaXRlLm9iamVjdHMuZ2V0KHBrPXNldHRpbmdzLlNJVEVfSUQpCiAK\nLSAgICBkZWYgZ2V0X2VtYWlsX3VzZXIodSk6Ci0gICAgICAgIGlmIG5vdCB1LmdldF9mdWxsX25h\nbWUoKToKLSAgICAgICAgICAgIHJldHVybiB1c2VyLmVtYWlsCi0gICAgICAgIGVsc2U6Ci0gICAg\nICAgICAgICByZXR1cm4gJyVzIDwlcz4nICUgKHUuZ2V0X2Z1bGxfbmFtZSgpLCB1LmVtYWlsKQor\nICAgIGZyb21fZW1haWwgPSBnZXRfZW1haWxfYWRkcmVzc19mb3JfdXNlcih1c2VyKQogCi0gICAg\nZnJvbV9lbWFpbCA9IGdldF9lbWFpbF91c2VyKHVzZXIpCisgICAgcmVjaXBpZW50X3RhYmxlID0g\neworICAgICAgICBmcm9tX2VtYWlsOiAxLAorICAgICAgICBnZXRfZW1haWxfYWRkcmVzc19mb3Jf\ndXNlcihyZXZpZXdfcmVxdWVzdC5zdWJtaXR0ZXIpOiAxLAorICAgIH0KIAotICAgIHJlY2lwaWVu\ndF9saXN0ID0gXAotICAgICAgICBbZ2V0X2VtYWlsX3VzZXIodSkgZm9yIHUgaW4gcmV2aWV3X3Jl\ncXVlc3QudGFyZ2V0X3Blb3BsZS5hbGwoKV0gKyBcCi0gICAgICAgIFsnJXMgPCVzPicgJSAoZ3Jv\ndXAuZGlzcGxheV9uYW1lLCBncm91cC5tYWlsaW5nX2xpc3QpIFwKLSAgICAgICAgICAgIGZvciBn\ncm91cCBpbiByZXZpZXdfcmVxdWVzdC50YXJnZXRfZ3JvdXBzLmFsbCgpXQorICAgIGZvciB1IGlu\nIHJldmlld19yZXF1ZXN0LnRhcmdldF9wZW9wbGUuYWxsKCk6CisgICAgICAgIHJlY2lwaWVudF90\nYWJsZVtnZXRfZW1haWxfYWRkcmVzc19mb3JfdXNlcih1KV0gPSAxCiAKLSAgICBpZiByZWNpcGll\nbnRfbGlzdCA9PSBbXToKLSAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBmb3IgZ3JvdXAgaW4gcmV2\naWV3X3JlcXVlc3QudGFyZ2V0X2dyb3Vwcy5hbGwoKToKKyAgICAgICAgcmVjaXBpZW50X3RhYmxl\nW2dldF9lbWFpbF9hZGRyZXNzX2Zvcl9ncm91cChncm91cCldID0gMQogCi0gICAgaWYgbm90IHVz\nZXIuZW1haWwgaW4gcmVjaXBpZW50X2xpc3Q6Ci0gICAgICAgIHJlY2lwaWVudF9saXN0ICs9IFt1\nc2VyLmVtYWlsXQorICAgIGlmIGV4dHJhX3JlY2lwaWVudHM6CisgICAgICAgIGZvciByZWNpcGll\nbnQgaW4gZXh0cmFfcmVjaXBpZW50czoKKyAgICAgICAgICAgIHJlY2lwaWVudF90YWJsZVtnZXRf\nZW1haWxfYWRkcmVzc19mb3JfdXNlcihyZWNpcGllbnQpXSA9IDEKIAorICAgIHJlY2lwaWVudF9s\naXN0ID0gW3JlY2lwaWVudCBmb3IgcmVjaXBpZW50IGluIHJlY2lwaWVudF90YWJsZV0KKwogICAg\nIGNvbnRleHRbJ2RvbWFpbiddID0gY3VycmVudF9zaXRlLmRvbWFpbgogICAgIGNvbnRleHRbJ3Jl\ndmlld19yZXF1ZXN0J10gPSByZXZpZXdfcmVxdWVzdAogICAgIGJvZHkgPSByZW5kZXJfdG9fc3Ry\naW5nKHRlbXBsYXRlX25hbWUsIGNvbnRleHQpCiAKLSAgICBzZXJ2ZXIgPSBzbXRwbGliLlNNVFAo\nc2V0dGluZ3MuRU1BSUxfSE9TVCwgc2V0dGluZ3MuRU1BSUxfUE9SVCkKLSAgICBpZiBzZXR0aW5n\ncy5FTUFJTF9IT1NUX1VTRVIgYW5kIHNldHRpbmdzLkVNQUlMX0hPU1RfUEFTU1dPUkQ6Ci0gICAg\nICAgIHNlcnZlci5sb2dpbihzZXR0aW5ncy5FTUFJTF9IT1NUX1VTRVIsCi0gICAgICAgICAgICAg\nICAgICAgICBzZXR0aW5ncy5FTUFJTF9IT1NUX1BBU1NXT1JEKQorICAgIG1lc3NhZ2UgPSBTcGlm\nZnlFbWFpbE1lc3NhZ2Uoc3ViamVjdC5zdHJpcCgpLCBib2R5LCBmcm9tX2VtYWlsLAorICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKHJlY2lwaWVudF9saXN0KSwKKyAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX3JlcGx5X3RvKQorICAgIG1lc3NhZ2Uu\nc2VuZCgpCiAKLSAgICBtc2cgPSBTYWZlTUlNRVRleHQoYm9keSwgJ3BsYWluJywgc2V0dGluZ3Mu\nREVGQVVMVF9DSEFSU0VUKQotICAgIG1zZ1snU3ViamVjdCddID0gc3ViamVjdC5zdHJpcCgpCi0g\nICAgbXNnWydGcm9tJ10gPSBmcm9tX2VtYWlsCi0gICAgbXNnWydUbyddID0gJywgJy5qb2luKHJl\nY2lwaWVudF9saXN0KQotICAgIG1zZ1snRGF0ZSddID0gcmZjODIyLmZvcm1hdGRhdGUoKQorICAg\nIHJldHVybiBtZXNzYWdlLm1lc3NhZ2VfaWQKIAotICAgIGlmIGluX3JlcGx5X3RvOgotICAgICAg\nICBtc2dbJ0luLVJlcGx5LVRvJ10gPSBpbl9yZXBseV90bwotICAgICAgICBtc2dbJ1JlZmVyZW5j\nZXMnXSA9IGluX3JlcGx5X3RvCiAKLSAgICB0cnk6Ci0gICAgICAgIHJhbmRvbV9iaXRzID0gc3Ry\nKHJhbmRvbS5nZXRyYW5kYml0cyg2NCkpCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOiAjIFB5\ndGhvbiAyLjMgZG9lc24ndCBoYXZlIHJhbmRvbS5nZXRyYW5kYml0cygpCi0gICAgICAgIHJhbmRv\nbV9iaXRzID0gJycuam9pbihbcmFuZG9tLmNob2ljZSgnMTIzNDU2Nzg5MCcpIGZvciBpIGluIHJh\nbmdlKDE5KV0pCitkZWYgaGFydmVzdF9wZW9wbGVfZnJvbV9yZXZpZXcocmV2aWV3KToKKyAgICAi\nIiIKKyAgICBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgcGVvcGxlIHdobyBoYXZlIGJlZW4gaW52b2x2\nZWQgaW4gdGhlIGRpc2N1c3Npb24gb24KKyAgICBhIHJldmlldy4KKyAgICAiIiIKIAotICAgIG1z\nZ1snTWVzc2FnZS1JRCddID0gIjwlZC4lc0Alcz4iICUgKHRpbWUudGltZSgpLCByYW5kb21fYml0\ncywgRE5TX05BTUUpCisgICAgIyBUaGlzIGxpc3QgY29tcHJlaGVuc2lvbiBnaXZlcyB1cyBldmVy\neSB1c2VyIGluIGV2ZXJ5IHJlcGx5LCByZWN1cnNpdmVseS4KKyAgICAjIEl0IGxvb2tzIHN0cmFu\nZ2UgYW5kIHBlcmhhcHMgYmFja3dhcmRzLCBidXQgd29ya3MuIFdlIGRvIGl0IHRoaXMgd2F5Cisg\nICAgIyBiZWNhdXNlIGhhcnZlc3RfcGVvcGxlX2Zyb21fcmV2aWV3IGdpdmVzIHVzIGEgbGlzdCBi\nYWNrLCB3aGljaCB3ZSBjYW4ndAorICAgICMgc3RpY2sgaW4gYXMgdGhlIHJlc3VsdCBmb3IgYSBz\ndGFuZGFyZCBsaXN0IGNvbXByZWhlbnNpb24uIFdlIGNvdWxkCisgICAgIyBvcHQgZm9yIGEgc2lt\ncGxlIGZvciBsb29wIGFuZCBjb25jZXRlbmF0ZSB0aGUgbGlzdCwgYnV0IHRoaXMgaXMgbW9yZQor\nICAgICMgZnVuLgorICAgIHJldHVybiBbcmV2aWV3LnVzZXJdICsgXAorICAgICAgICAgICBbdSBm\nb3IgcmVwbHkgaW4gcmV2aWV3LnJlcGxpZXMuYWxsKCkKKyAgICAgICAgICAgICAgZm9yIHUgaW4g\naGFydmVzdF9wZW9wbGVfZnJvbV9yZXZpZXcocmVwbHkpXQogCi0gICAgc2VydmVyLnNlbmRtYWls\nKGZyb21fZW1haWwsIHJlY2lwaWVudF9saXN0LCBtc2cuYXNfc3RyaW5nKCkpCiAKLSAgICByZXR1\ncm4gbXNnWydNZXNzYWdlLUlEJ10KK2RlZiBoYXJ2ZXN0X3Blb3BsZV9mcm9tX3Jldmlld19yZXF1\nZXN0KHJldmlld19yZXF1ZXN0KToKKyAgICAiIiIKKyAgICBSZXR1cm5zIGEgbGlzdCBvZiBhbGwg\ncGVvcGxlIHdobyBoYXZlIGJlZW4gaW52b2x2ZWQgaW4gYSBkaXNjdXNzaW9uIG9uCisgICAgYSBy\nZXZpZXcgcmVxdWVzdC4KKyAgICAiIiIKKyAgICAjIFNlZSB0aGUgY29tbWVudCBpbiBoYXJ2ZXN0\nX3Blb3BsZV9mcm9tX3JldmlldyBmb3IgdGhpcyBsaXN0CisgICAgIyBjb21wcmVoZW5zaW9uLgor\nICAgIHJldHVybiBbdSBmb3IgcmV2aWV3IGluIHJldmlld19yZXF1ZXN0LnJldmlld19zZXQuYWxs\nKCkKKyAgICAgICAgICAgICAgZm9yIHUgaW4gaGFydmVzdF9wZW9wbGVfZnJvbV9yZXZpZXcocmV2\naWV3KV0KIAogCiBkZWYgbWFpbF9yZXZpZXdfcmVxdWVzdCh1c2VyLCByZXZpZXdfcmVxdWVzdCk6\nCkBAIC04NCwxMSArMTE2LDE0IEBACiAgICAgaWYgcmV2aWV3X3JlcXVlc3QuZW1haWxfbWVzc2Fn\nZV9pZDoKICAgICAgICAgc3ViamVjdCA9ICJSZTogIiArIHN1YmplY3QKICAgICAgICAgcmVwbHlf\nbWVzc2FnZV9pZCA9IHJldmlld19yZXF1ZXN0LmVtYWlsX21lc3NhZ2VfaWQKKyAgICAgICAgZXh0\ncmFfcmVjaXBpZW50cyA9IGhhcnZlc3RfcGVvcGxlX2Zyb21fcmV2aWV3X3JlcXVlc3QocmV2aWV3\nX3JlcXVlc3QpCisgICAgZWxzZToKKyAgICAgICAgZXh0cmFfcmVjaXBpZW50cyA9IE5vbmUKIAog\nICAgIHJldmlld19yZXF1ZXN0LnRpbWVfZW1haWxlZCA9IGRhdGV0aW1lLm5vdygpCiAgICAgcmV2\naWV3X3JlcXVlc3QuZW1haWxfbWVzc2FnZV9pZCA9IFwKICAgICAgICAgc2VuZF9yZXZpZXdfbWFp\nbCh1c2VyLCByZXZpZXdfcmVxdWVzdCwgc3ViamVjdCwgcmVwbHlfbWVzc2FnZV9pZCwKLSAgICAg\nICAgICAgICAgICAgICAgICAgICAncmV2aWV3cy9yZXZpZXdfcmVxdWVzdF9lbWFpbC50eHQnKQor\nICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX3JlY2lwaWVudHMsICdyZXZpZXdzL3Jldmll\nd19yZXF1ZXN0X2VtYWlsLnR4dCcpCiAgICAgcmV2aWV3X3JlcXVlc3Quc2F2ZSgpCiAKIApAQCAt\nMTAyLDYgKzEzNyw3IEBACiAgICAgc2VuZF9yZXZpZXdfbWFpbCh1c2VyLCByZXZpZXdfcmVxdWVz\ndCwKICAgICAgICAgICAgICAgICAgICAgICJSZTogUmV2aWV3IFJlcXVlc3Q6ICVzIiAlIHJldmll\nd19yZXF1ZXN0LnN1bW1hcnksCiAgICAgICAgICAgICAgICAgICAgICByZXZpZXdfcmVxdWVzdC5l\nbWFpbF9tZXNzYWdlX2lkLAorICAgICAgICAgICAgICAgICAgICAgaGFydmVzdF9wZW9wbGVfZnJv\nbV9yZXZpZXdfcmVxdWVzdChyZXZpZXdfcmVxdWVzdCksCiAgICAgICAgICAgICAgICAgICAgICAn\ncmV2aWV3cy9kaWZmX3VwZGF0ZS50eHQnKQogICAgIHJldmlld19yZXF1ZXN0LnNhdmUoKQogCkBA\nIC0xMjIsNiArMTU4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiUmU6IFJldmlldyBS\nZXF1ZXN0OiAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlldy5yZXZpZXdfcmVx\ndWVzdC5zdW1tYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlldy5yZXZpZXdfcmVx\ndWVzdC5lbWFpbF9tZXNzYWdlX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsCiAg\nICAgICAgICAgICAgICAgICAgICAgICAgJ3Jldmlld3MvcmV2aWV3X2VtYWlsLnR4dCcsCiAgICAg\nICAgICAgICAgICAgICAgICAgICAgeydyZXZpZXcnOiByZXZpZXd9KQogICAgIHJldmlldy50aW1l\nX2VtYWlsZWQgPSBkYXRldGltZS5ub3coKQpAQCAtMTQzLDYgKzE4MCw3IEBACiAgICAgICAgICAg\nICAgICAgICAgICAgICAgIlJlOiBSZXZpZXcgUmVxdWVzdDogJXMiICUKICAgICAgICAgICAgICAg\nICAgICAgICAgICByZXZpZXcucmV2aWV3X3JlcXVlc3Quc3VtbWFyeSwKICAgICAgICAgICAgICAg\nICAgICAgICAgICByZXZpZXcuZW1haWxfbWVzc2FnZV9pZCwKKyAgICAgICAgICAgICAgICAgICAg\nICAgICBoYXJ2ZXN0X3Blb3BsZV9mcm9tX3JldmlldyhyZXZpZXcpLAogICAgICAgICAgICAgICAg\nICAgICAgICAgICdyZXZpZXdzL3JlcGx5X2VtYWlsLnR4dCcsCiAgICAgICAgICAgICAgICAgICAg\nICAgICAgeydyZXZpZXcnOiByZXZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBs\neSc6IHJlcGx5fSkK\n"}}, {"pk": "20", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 5, "dest_detail": "(working copy)", "source_revision": "651", "source_file": "\/trunk\/reviewboard\/reviews\/views.py", "dest_file": "\/trunk\/reviewboard\/reviews\/views.py", "diff_base64": "LS0tIHJldmlld3Mvdmlld3MucHkJKHJldmlzaW9uIDY1MSkKKysrIHJldmlld3Mvdmlld3MucHkJ\nKHdvcmtpbmcgY29weSkKQEAgLTI0MywxMCArMjQzLDE2IEBACiAKIAogQGxvZ2luX3JlcXVpcmVk\nCi1kZWYgZGlmZihyZXF1ZXN0LCBvYmplY3RfaWQsIHJldmlzaW9uPU5vbmUpOgotICAgIHJldmll\nd19yZXF1ZXN0ID0gZ2V0X29iamVjdF9vcl80MDQoUmV2aWV3UmVxdWVzdCwgcGs9b2JqZWN0X2lk\nKQorZGVmIGRpZmYocmVxdWVzdCwgcmV2aWV3X3JlcXVlc3RfaWQsIHJldmlzaW9uPU5vbmUsIGlu\ndGVyZGlmZl9yZXZpc2lvbj1Ob25lKToKKyAgICByZXZpZXdfcmVxdWVzdCA9IGdldF9vYmplY3Rf\nb3JfNDA0KFJldmlld1JlcXVlc3QsIHBrPXJldmlld19yZXF1ZXN0X2lkKQogICAgIGRpZmZzZXQg\nPSBfcXVlcnlfZm9yX2RpZmYocmV2aWV3X3JlcXVlc3QsIHJldmlzaW9uKQogCisgICAgaWYgaW50\nZXJkaWZmX3JldmlzaW9uOgorICAgICAgICBpbnRlcmRpZmZzZXQgPSBfcXVlcnlfZm9yX2RpZmYo\ncmV2aWV3X3JlcXVlc3QsIGludGVyZGlmZl9yZXZpc2lvbikKKyAgICAgICAgaW50ZXJkaWZmc2V0\nX2lkID0gaW50ZXJkaWZmc2V0LmlkCisgICAgZWxzZToKKyAgICAgICAgaW50ZXJkaWZmc2V0X2lk\nID0gTm9uZQorCiAgICAgdHJ5OgogICAgICAgICByZXZpZXcgPSBSZXZpZXcub2JqZWN0cy5nZXQo\ndXNlcj1yZXF1ZXN0LnVzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy\nZXZpZXdfcmVxdWVzdD1yZXZpZXdfcmVxdWVzdCwKQEAgLTI2MSw3ICsyNjcsNyBAQAogICAgIGV4\nY2VwdCBSZXZpZXdSZXF1ZXN0RHJhZnQuRG9lc05vdEV4aXN0OgogICAgICAgICBkcmFmdCA9IE5v\nbmUKIAotICAgIHJldHVybiB2aWV3X2RpZmYocmVxdWVzdCwgZGlmZnNldC5pZCwgeworICAgIHJl\ndHVybiB2aWV3X2RpZmYocmVxdWVzdCwgZGlmZnNldC5pZCwgaW50ZXJkaWZmc2V0X2lkLCB7CiAg\nICAgICAgICdyZXZpZXcnOiByZXZpZXcsCiAgICAgICAgICdyZXZpZXdfcmVxdWVzdCc6IHJldmll\nd19yZXF1ZXN0LAogICAgICAgICAncmV2aWV3X3JlcXVlc3RfZGV0YWlscyc6IGRyYWZ0IG9yIHJl\ndmlld19yZXF1ZXN0LAo=\n"}}, {"pk": "21", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 5, "dest_detail": "(working copy)", "source_revision": "652", "source_file": "\/trunk\/reviewboard\/diffviewer\/views.py", "dest_file": "\/trunk\/reviewboard\/diffviewer\/views.py", "diff_base64": "LS0tIGRpZmZ2aWV3ZXIvdmlld3MucHkJKHJldmlzaW9uIDY1MikKKysrIGRpZmZ2aWV3ZXIvdmll\nd3MucHkJKHdvcmtpbmcgY29weSkKQEAgLTE4LDcgKzE4LDcgQEAKICAgICBwYXNzCiAKIAotZGVm\nIGdldF9kaWZmX2ZpbGVzKGRpZmZzZXQpOgorZGVmIGdldF9kaWZmX2ZpbGVzKGRpZmZzZXQsIGlu\ndGVyZGlmZnNldD1Ob25lKToKICAgICBkZWYgZ2V0X29yaWdpbmFsX2ZpbGUoZmlsZSwgcmV2aXNp\nb24pOgogICAgICAgICAiIiJHZXQgYSBmaWxlIGVpdGhlciBmcm9tIHRoZSBjYWNoZSBvciB0aGUg\nU0NNLiAgU0NNIGV4Y2VwdGlvbnMgYXJlCiAgICAgICAgICAgIHBhc3NlZCBiYWNrIHRvIHRoZSBj\nYWxsZXIuIiIiCkBAIC0zMyw3ICszMywxNCBAQAogICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBl\nOgogICAgICAgICAgICAgcmFpc2UgVXNlclZpc2libGVFcnJvcihzdHIoZSkpCiAKLSAgICBkZWYg\nZ2V0X2NodW5rcyhmaWxlZGlmZik6CisgICAgZGVmIGdldF9wYXRjaGVkX2ZpbGUoYnVmZmVyLCBm\naWxlZGlmZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBkaWZmdXRpbHMucGF0\nY2goZmlsZWRpZmYuZGlmZiwgYnVmZmVyLCBmaWxlZGlmZi5kZXN0X2ZpbGUpCisgICAgICAgIGV4\nY2VwdCBFeGNlcHRpb24sIGU6CisgICAgICAgICAgICByYWlzZSBVc2VyVmlzaWJsZUVycm9yKHN0\ncihlKSkKKworCisgICAgZGVmIGdldF9jaHVua3MoZmlsZWRpZmYsIGludGVyZmlsZWRpZmY9Tm9u\nZSk6CiAgICAgICAgIGRlZiBkaWZmX2xpbmUobGluZW51bSwgb2xkbGluZSwgbmV3bGluZSk6CiAg\nICAgICAgICAgICBpZiBub3Qgb2xkbGluZSBvciBub3QgbmV3bGluZToKICAgICAgICAgICAgICAg\nICByZXR1cm4gW2xpbmVudW0sIG9sZGxpbmUgb3IgJycsIFtdLCBuZXdsaW5lIG9yICcnLCBbXV0K\nQEAgLTY0LDExICs3MSwxMSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb2xkID0gZ2V0\nX29yaWdpbmFsX2ZpbGUoZmlsZSwgcmV2aXNpb24pCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAg\nICAgbmV3ID0gZGlmZnV0aWxzLnBhdGNoKGZpbGVkaWZmLmRpZmYsIG9sZCwgZmlsZWRpZmYuZGVz\ndF9maWxlKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgcmFpc2Ug\nVXNlclZpc2libGVFcnJvcihzdHIoZSkpCisgICAgICAgIG5ldyA9IGdldF9wYXRjaGVkX2ZpbGUo\nb2xkLCBmaWxlZGlmZikKIAorICAgICAgICBpZiBpbnRlcmZpbGVkaWZmOgorICAgICAgICAgICAg\nb2xkLCBuZXcgPSBuZXcsIGdldF9wYXRjaGVkX2ZpbGUob2xkLCBpbnRlcmZpbGVkaWZmKQorCiAg\nICAgICAgIGEgPSAob2xkIG9yICcnKS5zcGxpdGxpbmVzKCkKICAgICAgICAgYiA9IChuZXcgb3Ig\nJycpLnNwbGl0bGluZXMoKQogICAgICAgICBhX251bV9saW5lcyA9IGxlbihhKQpAQCAtMTA2LDcg\nKzExMyw2IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGNodW5rcy5hcHBl\nbmQobmV3X2NodW5rKGxpbmVzLCBudW1saW5lcywgdGFnKSkKIAotCiAgICAgICAgIHJldHVybiBj\naHVua3MKIAogICAgIGRlZiBhZGRfbmF2aWdhdGlvbl9jdWVzKGZpbGVzKToKQEAgLTE0MCw2ICsx\nNDYsMTkgQEAKICAgICBmb3IgZmlsZWRpZmYgaW4gZGlmZnNldC5maWxlcy5hbGwoKToKICAgICAg\nICAgaWYgZmlsZWRpZmYuYmluYXJ5OgogICAgICAgICAgICAgY2h1bmtzID0gW10KKyAgICAgICAg\nZWxpZiBpbnRlcmRpZmZzZXQ6CisgICAgICAgICAgICAjIFhYWCBUaGlzIGlzIHNsb3cuIFdlIHNo\nb3VsZCBvcHRpbWl6ZSB0aGlzLgorICAgICAgICAgICAgaW50ZXJmaWxlZGlmZiA9IE5vbmUKKyAg\nICAgICAgICAgIGZvciBmaWxlZGlmZjIgaW4gaW50ZXJkaWZmc2V0LmZpbGVzLmFsbCgpOgorICAg\nICAgICAgICAgICAgIGlmIGZpbGVkaWZmMi5zb3VyY2VfZmlsZSA9PSBmaWxlZGlmZi5zb3VyY2Vf\nZmlsZToKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmaWxlZGlmZiA9IGZpbGVkaWZmMgorICAg\nICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBpZiBpbnRlcmZpbGVkaWZmOgor\nICAgICAgICAgICAgICAgIGNodW5rcyA9IGNhY2hlX21lbW9pemUoJ2RpZmYtc2lkZWJ5c2lkZS1p\nbnRlcmRpZmYtJXMtJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nIChmaWxlZGlmZi5pZCwgaW50ZXJmaWxlZGlmZi5pZCksCisgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICBsYW1iZGE6IGdldF9jaHVua3MoZmlsZWRpZmYsCisgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmaWxl\nZGlmZikpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjaHVua3MgPSBjYWNoZV9tZW1vaXpl\nKCdkaWZmLXNpZGVieXNpZGUtJXMnICUgZmlsZWRpZmYuaWQsCiAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgIGxhbWJkYTogZ2V0X2NodW5rcyhmaWxlZGlmZikpCkBAIC0xNjYsMTIg\nKzE4NSwxNyBAQAogICAgIHJldHVybiBmaWxlcwogCiAKLWRlZiB2aWV3X2RpZmYocmVxdWVzdCwg\nb2JqZWN0X2lkLCBleHRyYV9jb250ZXh0PXt9LAorZGVmIHZpZXdfZGlmZihyZXF1ZXN0LCBkaWZm\nc2V0X2lkLCBpbnRlcmRpZmZzZXRfaWQ9Tm9uZSwgZXh0cmFfY29udGV4dD17fSwKICAgICAgICAg\nICAgICAgdGVtcGxhdGVfbmFtZT0nZGlmZnZpZXdlci92aWV3X2RpZmYuaHRtbCcpOgotICAgIGRp\nZmZzZXQgPSBnZXRfb2JqZWN0X29yXzQwNChEaWZmU2V0LCBwaz1vYmplY3RfaWQpCisgICAgZGlm\nZnNldCA9IGdldF9vYmplY3Rfb3JfNDA0KERpZmZTZXQsIHBrPWRpZmZzZXRfaWQpCiAKKyAgICBp\nZiBpbnRlcmRpZmZzZXRfaWQ6CisgICAgICAgIGludGVyZGlmZnNldCA9IGdldF9vYmplY3Rfb3Jf\nNDA0KERpZmZTZXQsIHBrPWludGVyZGlmZnNldF9pZCkKKyAgICBlbHNlOgorICAgICAgICBpbnRl\ncmRpZmZzZXQgPSBOb25lCisKICAgICB0cnk6Ci0gICAgICAgIGZpbGVzID0gZ2V0X2RpZmZfZmls\nZXMoZGlmZnNldCkKKyAgICAgICAgZmlsZXMgPSBnZXRfZGlmZl9maWxlcyhkaWZmc2V0LCBpbnRl\ncmRpZmZzZXQpCiAKICAgICAgICAgaWYgcmVxdWVzdC5HRVQuZ2V0KCdleHBhbmQnLCBGYWxzZSk6\nCiAgICAgICAgICAgICBjb2xsYXBzZWFsbCA9IEZhbHNlCkBAIC0xODQsNiArMjA4LDcgQEAKIAog\nICAgICAgICBjb250ZXh0ID0gewogICAgICAgICAgICAgJ2RpZmZzZXQnOiBkaWZmc2V0LAorICAg\nICAgICAgICAgJ2ludGVyZGlmZnNldCc6IGludGVyZGlmZnNldCwKICAgICAgICAgICAgICdmaWxl\ncyc6IGZpbGVzLAogICAgICAgICAgICAgJ2NvbGxhcHNlYWxsJzogY29sbGFwc2VhbGwsCiAgICAg\nICAgIH0K\n"}}, {"pk": "22", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 5, "dest_detail": "(working copy)", "source_revision": "651", "source_file": "\/trunk\/reviewboard\/templates\/reviews\/review_request_box.html", "dest_file": "\/trunk\/reviewboard\/templates\/reviews\/review_request_box.html", "diff_base64": "LS0tIHRlbXBsYXRlcy9yZXZpZXdzL3Jldmlld19yZXF1ZXN0X2JveC5odG1sCShyZXZpc2lvbiA2\nNTEpCisrKyB0ZW1wbGF0ZXMvcmV2aWV3cy9yZXZpZXdfcmVxdWVzdF9ib3guaHRtbAkod29ya2lu\nZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKIHslIGxvYWQgcmV2aWV3dGFncyAlfQogPGRpdiBjbGFz\ncz0ibWFpbiI+CiAgPGRpdiBjbGFzcz0iaGVhZGVyIj4KLSAgPGRpdiBpZD0ic3VtbWFyeV93cmFw\ncGVyIj48aDEgaWQ9InN1bW1hcnkiPnt7cmV2aWV3X3JlcXVlc3RfZGV0YWlscy5zdW1tYXJ5fX08\nL2gxPjwvZGl2PgorICA8ZGl2IGlkPSJzdW1tYXJ5X3dyYXBwZXIiPjxoMSBpZD0ic3VtbWFyeSI+\neyUgYmxvY2sgc3VtbWFyeV9wcmVmaXggJX17JSBlbmRibG9jayAlfXt7cmV2aWV3X3JlcXVlc3Rf\nZGV0YWlscy5zdW1tYXJ5fX08L2gxPjwvZGl2PgogICA8cCBpZD0ic3RhdHVzIj4KICAgIHt7cmV2\naWV3X3JlcXVlc3QuZ2V0X3N0YXR1c19kaXNwbGF5fX08YnIgLz4KICAgIFVwZGF0ZWQge3tyZXZp\nZXdfcmVxdWVzdF9kZXRhaWxzLmxhc3RfdXBkYXRlZHx0aW1lc2luY2V9fSBhZ28K\n"}}, {"pk": "23", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 5, "dest_detail": "(working copy)", "source_revision": "670", "source_file": "\/trunk\/reviewboard\/templates\/diffviewer\/view_diff.html", "dest_file": "\/trunk\/reviewboard\/templates\/diffviewer\/view_diff.html", "diff_base64": "LS0tIHRlbXBsYXRlcy9kaWZmdmlld2VyL3ZpZXdfZGlmZi5odG1sCShyZXZpc2lvbiA2NzApCisr\nKyB0ZW1wbGF0ZXMvZGlmZnZpZXdlci92aWV3X2RpZmYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt\nMjAsNiArMjAsMTAgQEAKIDwvc2NyaXB0PgogeyUgZW5kYmxvY2sgJX0KIAoreyUgYmxvY2sgc3Vt\nbWFyeV9wcmVmaXggJX0KK0RpZmYgZm9yOgoreyUgZW5kYmxvY2sgJX0KKwogeyUgYmxvY2sgY29u\ndGVudCAlfQogeyUgYm94IHJldmlldy1yZXF1ZXN0ICV9CiA8dWwgaWQ9InRvcGNvbnRyb2xzIj4K\n"}}, {"pk": "24", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 5, "dest_detail": "(working copy)", "source_revision": "651", "source_file": "\/trunk\/reviewboard\/urls.py", "dest_file": "\/trunk\/reviewboard\/urls.py", "diff_base64": "LS0tIHVybHMucHkJKHJldmlzaW9uIDY1MSkKKysrIHVybHMucHkJKHdvcmtpbmcgY29weSkKQEAg\nLTQzLDkgKzQzLDkgQEAKICAgICAgeyd0ZW1wbGF0ZV9uYW1lJzogJ3Jldmlld3MvcmV2aWV3X2Rl\ndGFpbC5odG1sJ30pLAogCiAgICAgIyBSZXZpZXcgcmVxdWVzdCBkaWZmcwotICAgIChyJ15yLyg\/\nUDxvYmplY3RfaWQ+WzAtOV0rKS9kaWZmLyQnLAorICAgIChyJ15yLyg\/UDxyZXZpZXdfcmVxdWVz\ndF9pZD5bMC05XSspL2RpZmYvJCcsCiAgICAgICdyZXZpZXdib2FyZC5yZXZpZXdzLnZpZXdzLmRp\nZmYnKSwKLSAgICAocideci8oP1A8b2JqZWN0X2lkPlswLTldKykvZGlmZi8oP1A8cmV2aXNpb24+\nWzAtOV0rKS8kJywKKyAgICAocideci8oP1A8cmV2aWV3X3JlcXVlc3RfaWQ+WzAtOV0rKS9kaWZm\nLyg\/UDxyZXZpc2lvbj5bMC05XSspLyQnLAogICAgICAncmV2aWV3Ym9hcmQucmV2aWV3cy52aWV3\ncy5kaWZmJyksCiAKICAgICAocideci8oP1A8cmV2aWV3X3JlcXVlc3RfaWQ+WzAtOV0rKS9kaWZm\nL3Jhdy8kJywKQEAgLTU2LDYgKzU2LDExIEBACiAgICAgKHInXnIvKD9QPG9iamVjdF9pZD5bMC05\nXSspL2RpZmYvKD9QPHJldmlzaW9uPlswLTldKykvZnJhZ21lbnQvKD9QPGZpbGVkaWZmX2lkPlsw\nLTldKykvJCcsCiAgICAgICdyZXZpZXdib2FyZC5yZXZpZXdzLnZpZXdzLmRpZmZfZnJhZ21lbnQn\nKSwKIAorICAgICMgUmV2aWV3IHJlcXVlc3QgaW50ZXJkaWZmcworICAgIChyJ15yLyg\/UDxyZXZp\nZXdfcmVxdWVzdF9pZD5bMC05XSspL2RpZmYvKD9QPHJldmlzaW9uPlswLTldKyktKD9QPGludGVy\nZGlmZl9yZXZpc2lvbj5bMC05XSspLyQnLAorICAgICAncmV2aWV3Ym9hcmQucmV2aWV3cy52aWV3\ncy5kaWZmJyksCisKKwogICAgICMgUmV2aWV3IHJlcXVlc3QgbW9kaWZpY2F0aW9uCiAgICAgKHIn\nXnIvWzAtOV0rL2RpZmYvdXBsb2FkLyQnLAogICAgICAncmV2aWV3Ym9hcmQuZGlmZnZpZXdlci52\naWV3cy51cGxvYWQnLAo=\n"}}, {"pk": "25", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 6, "dest_detail": "(working copy)", "source_revision": "380", "source_file": "\/trunk\/reviewboard\/htdocs\/scripts\/diffviewer.js", "dest_file": "\/trunk\/reviewboard\/htdocs\/scripts\/diffviewer.js", "diff_base64": "LS0tIGh0ZG9jcy9zY3JpcHRzL2RpZmZ2aWV3ZXIuanMJKHJldmlzaW9uIDM4MCkKKysrIGh0ZG9j\ncy9zY3JpcHRzL2RpZmZ2aWV3ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTI2NSw3ICsyNjUsNyBA\nQAogCQkJfS5jcmVhdGVEZWxlZ2F0ZSh0aGlzKSwKIAogCQkJZmFpbHVyZTogZnVuY3Rpb24ocmVz\nKSB7Ci0JCQkJdGhpcy5zaG93RXJyb3IocmVzLnN0YXR1c1RleHQpOworCQkJCXRoaXMuc2hvd0Vy\ncm9yKHJlcy5zdGF0dXNUZXh0LCByZXMucmVzcG9uc2VUZXh0KTsKIAkJCX0uY3JlYXRlRGVsZWdh\ndGUodGhpcykKIAkJfSk7CiAJfSwKQEAgLTM0OCw3ICszNDgsNyBAQAogCQl2YXIgdGV4dCA9IHRo\naXMubmV3Q29tbWVudEZpZWxkLmRvbS52YWx1ZTsKIAogCQlpZiAodGV4dC5zdHJpcCgpID09ICIi\nKSB7Ci0JCQl0aGlzLnNob3dFcnJvcigiUGxlYXNlIGZpbGwgb3V0IHRoZSBjb21tZW50IHRleHQu\nIik7CisJCQl0aGlzLnNob3dFcnJvcigiUGxlYXNlIGZpbGwgb3V0IHRoZSBjb21tZW50IHRleHQu\nIiwgIiIpOwogCQkJcmV0dXJuOwogCQl9CiAKQEAgLTQxMSwxMCArNDExLDYgQEAKIAkJZ2V0RWwo\nImlkX3NoaXBpdCIpLmRvbS5jaGVja2VkID0gZmFsc2U7CiAJfSwKIAotCXNob3dFcnJvcjogZnVu\nY3Rpb24odGV4dCkgewotCQl0aGlzLnNob3dNZXNzYWdlKHRleHQsICJlcnJvciIpOwotCX0sCi0K\nIAlnZXRDb21tZW50QWN0aW9uVVJMOiBmdW5jdGlvbigpIHsKIAkJcmV0dXJuICJjb21tZW50cy8i\nICsgdGhpcy5jb21tZW50QmxvY2suZmlsZWRpZmZpZCArICIvIiArCiAJCSAgICAgICB0aGlzLmNv\nbW1lbnRCbG9jay5saW5lbnVtICsgIi8iOwpAQCAtNDM2LDcgKzQzMiw3IEBACiAJCQl9LmNyZWF0\nZURlbGVnYXRlKHRoaXMpLAogCiAJCQlmYWlsdXJlOiBmdW5jdGlvbihyZXMpIHsKLQkJCQl0aGlz\nLnNob3dFcnJvcihyZXMuc3RhdHVzVGV4dCk7CisJCQkJdGhpcy5zaG93RXJyb3IocmVzLnN0YXR1\nc1RleHQsIHJlcy5yZXNwb25zZVRleHQpOwogCQkJfS5jcmVhdGVEZWxlZ2F0ZSh0aGlzKQogCQl9\nKTsKIAl9LApAQCAtNDUxLDE4ICs0NDcsNDEgQEAKIAkJCX0uY3JlYXRlRGVsZWdhdGUodGhpcyks\nCiAKIAkJCWZhaWx1cmU6IGZ1bmN0aW9uKHJlcykgewotCQkJCXRoaXMuc2hvd0Vycm9yKHJlcy5z\ndGF0dXNUZXh0KTsKKwkJCQl0aGlzLnNob3dFcnJvcihyZXMuc3RhdHVzVGV4dCwgcmVzLnJlc3Bv\nbnNlVGV4dCk7CiAJCQl9LmNyZWF0ZURlbGVnYXRlKHRoaXMpCiAJCX0pOwogCX0sCiAKLQlzaG93\nTWVzc2FnZTogZnVuY3Rpb24obWVzc2FnZSwgY2xhc3NOYW1lKSB7Ci0JCXRoaXMubWVzc2FnZURp\ndi5kb20uaW5uZXJIVE1MID0gbWVzc2FnZQorCXNob3dFcnJvcjogZnVuY3Rpb24odGV4dCwgYm9k\neSkgeworCQlpZiAoYm9keSA9PSAiIikgeworCQkJdGhpcy5tZXNzYWdlRGl2LmRvbS5pbm5lckhU\nTUwgPSBtZXNzYWdlCisJCX0gZWxzZSB7CisJCQl0aGlzLm1lc3NhZ2VEaXYuZG9tLmlubmVySFRN\nTCA9ICIiOworCQkJdmFyIGlmcmFtZSA9IGdldEVsKCdlcnJvci1kbGctY29udGVudHMnKTsKKwkJ\nCXZhciBkb2MgPSBpZnJhbWUuZG9tLmNvbnRlbnREb2N1bWVudCB8fAorCQkJICAgICAgICAgIGlm\ncmFtZS5kb20uY29udGVudFdpbmRvdy5kb2N1bWVudDsKKwkJCWRvYy5vcGVuKCk7CisJCQlkb2Mu\nd3JpdGUoYm9keSk7CisJCQlkb2MuY2xvc2UoKTsKKwkJCWlmcmFtZS5zaG93KCk7CiAKLQkJaWYg\nKGNsYXNzTmFtZSkgewotCQkJdGhpcy5tZXNzYWdlRGl2LmRvbS5jbGFzc05hbWUgPSBjbGFzc05h\nbWU7CisJCQl2YXIgZWwgPSBkaC5hcHBlbmQodGhpcy5tZXNzYWdlRGl2LmRvbSwgeworCQkJCXRh\nZzogJ2EnLAorCQkJCWhyZWY6ICcjJywKKwkJCQlodG1sOiB0ZXh0CisJCQl9LCB0cnVlKTsKKwor\nCQkJZWwub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgeworCQkJCXZhciBkbGcgPSBuZXcgWUFIT08u\nZXh0LkJhc2ljRGlhbG9nKCdlcnJvci1kbGcnLCB7fSk7CisJCQkJZGxnLnNob3coZWwpOworCisJ\nCQkJZGxnLm9uKCdoaWRlJywgZnVuY3Rpb24oKSB7CisJCQkJCWlmcmFtZS5oaWRlKCk7CisJCQkJ\nfSwgdGhpcywgdHJ1ZSk7CisJCQl9LCB0aGlzLCB0cnVlKTsKIAkJfQogCisJCXRoaXMubWVzc2Fn\nZURpdi5kb20uY2xhc3NOYW1lID0gImVycm9yIjsKIAkJdGhpcy5tZXNzYWdlRGl2LnNob3coKTsK\nIAl9LAogCg==\n"}}, {"pk": "26", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 6, "dest_detail": "(working copy)", "source_revision": "376", "source_file": "\/trunk\/reviewboard\/templates\/diffviewer\/view_diff.html", "dest_file": "\/trunk\/reviewboard\/templates\/diffviewer\/view_diff.html", "diff_base64": "LS0tIHRlbXBsYXRlcy9kaWZmdmlld2VyL3ZpZXdfZGlmZi5odG1sCShyZXZpc2lvbiAzNzYpCisr\nKyB0ZW1wbGF0ZXMvZGlmZnZpZXdlci92aWV3X2RpZmYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt\nNTUsNyArNTUsNyBAQAogPGEgbmFtZT0ie3tmaWxlLmluZGV4fX0iPjwvYT4KIHslIGluY2x1ZGUg\nImRpZmZ2aWV3ZXIvZGlmZl9maWxlX2ZyYWdtZW50Lmh0bWwiICV9CiA8c2NyaXB0IGxhbmd1YWdl\nPSJqYXZhc2NyaXB0Ij4KLSAgZ0ZpbGVBbmNob3JUb0lkWyJmaWxle3tmaWxlLmluZGV4fX0iXSA9\nIHt7ZmlsZS5maWxlZGlmZi5pZH19OworICBhZGRBbmNob3JNYXBwaW5nKCJmaWxle3tmaWxlLmlu\nZGV4fX0iLCB7e2ZpbGUuZmlsZWRpZmYuaWR9fSk7CiAgIGFkZENvbW1lbnRzKCJmaWxle3tmaWxl\nLmluZGV4fX0iLCB7JSBjb21tZW50Y291bnRzIGZpbGUuZmlsZWRpZmYgJX0pOwogPC9zY3JpcHQ+\nCiB7JSBlbmRmb3IgJX0KQEAgLTg5LDQgKzg5LDExIEBACiAgIDwvZm9ybT4KICA8L2Rpdj4KIDwv\nZGl2PgorCis8ZGl2IGlkPSJlcnJvci1kbGciIHN0eWxlPSJ2aXNpYmlsaXR5OmhpZGRlbjtwb3Np\ndGlvbjphYnNvbHV0ZTt0b3A6MHB4OyI+CisgPGRpdiBjbGFzcz0ieWRsZy1oZCI+RXJyb3Igb3V0\ncHV0PC9kaXY+CisgPGRpdiBjbGFzcz0ieWRsZy1iZCI+CisgIDxpZnJhbWUgaWQ9ImVycm9yLWRs\nZy1jb250ZW50cyI+PC9pZnJhbWU+CisgPC9kaXY+Cis8L2Rpdj4KIHslIGVuZGJsb2NrICV9Cg==\n"}}, {"pk": "27", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 7, "dest_detail": "(working copy)", "source_revision": "557", "source_file": "\/trunk\/reviewboard\/htdocs\/css\/common.css", "dest_file": "\/trunk\/reviewboard\/htdocs\/css\/common.css", "diff_base64": "LS0tIGh0ZG9jcy9jc3MvY29tbW9uLmNzcwkocmV2aXNpb24gNTU3KQorKysgaHRkb2NzL2Nzcy9j\nb21tb24uY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNiArMjAwLDcgQEAKIAogLmJveCBoMS50\naXRsZSB7CiAgIGJhY2tncm91bmQ6ICNhMmJlZGMgdXJsKCcvaW1hZ2VzL2JveF90b3BfYmcucG5n\nJykgcmVwZWF0LXggdG9wIGxlZnQ7CisgIGJvcmRlci1ib3R0b206IDFweCAjNzI4ZWFjIHNvbGlk\nOwogICBmb250LXNpemU6IDEyMCU7CiAgIG1hcmdpbjogMDsKICAgcGFkZGluZzogNXB4IDEwcHg7\nCkBAIC0yNTUsNiArMjU2LDE4IEBACiAgIGRpc3BsYXk6IGlubGluZTsKIH0KIAorCisvKioqKioq\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq\nKioqKioqKioqKioqKgorICogTG9nIEluIEZvcm0KKyAqKioqKioqKioqKioqKioqKioqKioqKioq\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLmJv\neC5sb2dpbmZvcm0gdGFibGUgdGQgeworICBwYWRkaW5nOiA0cHg7Cit9CisKKworLyoqKioqKioq\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq\nKioqKioqKioqKioKKyAqIEFjY291bnQgcGFnZQorICoqKioqKioqKioqKioqKioqKioqKioqKioq\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAucHJl\nZnNidXR0b25zIHsKICAgcGFkZGluZzogOHB4OwogICBiYWNrZ3JvdW5kLWNvbG9yOiAjQjZDQ0Uz\nOwo=\n"}}, {"pk": "28", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 7, "dest_detail": "(working copy)", "source_revision": "550", "source_file": "\/trunk\/reviewboard\/templates\/accounts\/login.html", "dest_file": "\/trunk\/reviewboard\/templates\/accounts\/login.html", "diff_base64": "LS0tIHRlbXBsYXRlcy9hY2NvdW50cy9sb2dpbi5odG1sCShyZXZpc2lvbiA1NTApCisrKyB0ZW1w\nbGF0ZXMvYWNjb3VudHMvbG9naW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMywzMCArMyw0OCBA\nQAogeyUgYmxvY2sgdGl0bGUgJX1Mb2cgaW57JSBlbmRibG9jayAlfQogCiB7JSBibG9jayBjb250\nZW50ICV9Ci08ZGl2IGNsYXNzPSJzZWN0aW9uIj4KLSA8aDE+TG9nIGluPC9oMT4KLSA8ZGl2IGNs\nYXNzPSJib2R5Ij4KLSAgeyUgaWYgZXJyb3IgJX0KLSAgeyUgIGVycm9yYm94ICV9Ci0gIHt7IGVy\ncm9yIH19Ci0gIHslICBlbmRlcnJvcmJveCAlfQotICB7JSBlbmRpZiAlfQotICA8Zm9ybSBtZXRo\nb2Q9InBvc3QiIGFjdGlvbj0iLiI+Ci0gICA8dGFibGUgaWQ9ImxvZ2luX2Zvcm0iPgotICAgIDx0\ncj4KLSAgICAgPHRkIGNsYXNzPSJsYWJlbCI+PGxhYmVsIGZvcj0iaWRfdXNlcm5hbWUiPlVzZXJu\nYW1lOjwvbGFiZWw+PC90ZD4KLSAgICAgPHRkIGNsYXNzPSJmaWVsZCI+PGlucHV0IHR5cGU9InRl\neHQiIG5hbWU9InVzZXJuYW1lIiBpZD0iaWRfdXNlcm5hbWUiIC8+PC90ZD4KLSAgICA8L3RyPgot\nICAgIDx0cj4KLSAgICAgPHRkIGNsYXNzPSJsYWJlbCI+PGxhYmVsIGZvcj0iaWRfcGFzc3dvcmQi\nPlBhc3N3b3JkOjwvbGFiZWw+PC90ZD4KLSAgICAgPHRkIGNsYXNzPSJmaWVsZCI+PGlucHV0IHR5\ncGU9InBhc3N3b3JkIiBuYW1lPSJwYXNzd29yZCIgaWQ9ImlkX3Bhc3N3b3JkIiAvPjwvdGQ+Ci0g\nICAgPC90cj4KLSAgICA8dHI+Ci0gICAgIDx0ZD4mbmJzcDs8L3RkPgotICAgICA8dGQgY2xhc3M9\nImZpZWxkIj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iTG9nIGluIiAvPjwvdGQ+Ci0gICAg\nPC90cj4KLSAgIDwvdGFibGU+Ci0gIDwvZm9ybT4KK3slIGJveCBpbXBvcnRhbnQgJX0KK3slIGlm\nIEJVSUxUSU5fQVVUSCAlfQorIDxoMT5OZXcgdXNlcj88L2gxPgorIDxwPgorICBJZiB5b3UgZG9u\nJ3QgeWV0IGhhdmUgYW4gYWNjb3VudCwgeW91J2xsIG5lZWQgdG8KKyAgPGEgaHJlZj0iL2FjY291\nbnQvcmVnaXN0ZXIvIj5yZWdpc3RlcjwvYT4gb25lLiBJdCB3aWxsIG9ubHkgdGFrZSBhCisgIG1p\nbnV0ZS4KKyA8L3A+Cit7JSBlbHNlICV9CisgPGgxPkxvZyBpbiB3aXRoIHlvdXIgc3RhbmRhcmQg\ndXNlcm5hbWUgYW5kIHBhc3N3b3JkPC9oMT4KKyA8cD4KKyAgVGhlcmUncyBubyBuZWVkIHRvIHJl\nZ2lzdGVyIGEgbmV3IGFjY291bnQuIFlvdXIgc3RhbmRhcmQgdXNlcm5hbWUgYW5kCisgIHBhc3N3\nb3JkIHNob3VsZCB3b3JrIGZpbmUuCisgPC9wPgoreyUgZW5kaWYgJX0KK3slIGVuZGJveCAlfQor\nCit7JSBib3ggbG9naW5mb3JtICV9Cis8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iLiI+Cisg\nPGgxIGNsYXNzPSJ0aXRsZSI+TG9nIEluPC9oMT4KKyA8ZGl2IGNsYXNzPSJtYWluIj4KKyB7JSBp\nZiBlcnJvciAlfQorIHslICBlcnJvcmJveCAlfQorIHt7IGVycm9yIH19CisgeyUgIGVuZGVycm9y\nYm94ICV9CisgeyUgZW5kaWYgJX0KKyA8dGFibGU+CisgIDx0cj4KKyAgIDx0ZCBjbGFzcz0ibGFi\nZWwiPjxsYWJlbCBmb3I9ImlkX3VzZXJuYW1lIj5Vc2VybmFtZTo8L2xhYmVsPjwvdGQ+CisgICA8\ndGQgY2xhc3M9ImZpZWxkIj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idXNlcm5hbWUiIGlkPSJp\nZF91c2VybmFtZSIgLz48L3RkPgorICA8L3RyPgorICA8dHI+CisgICA8dGQgY2xhc3M9ImxhYmVs\nIj48bGFiZWwgZm9yPSJpZF9wYXNzd29yZCI+UGFzc3dvcmQ6PC9sYWJlbD48L3RkPgorICAgPHRk\nIGNsYXNzPSJmaWVsZCI+PGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwYXNzd29yZCIgaWQ9\nImlkX3Bhc3N3b3JkIiAvPjwvdGQ+CisgIDwvdHI+CisgIDx0cj4KKyAgIDx0ZD4mbmJzcDs8L3Rk\nPgorICAgPHRkIGNsYXNzPSJmaWVsZCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkxvZyBp\nbiIgLz48L3RkPgorICA8L3RyPgorIDwvdGFibGU+CiAgPC9kaXY+Ci08L2Rpdj4KKzwvZm9ybT4K\nK3slIGVuZGJveCAlfQorCiB7JSBlbmRibG9jayAlfQo=\n"}}, {"pk": "29", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 7, "dest_detail": "(working copy)", "source_revision": "550", "source_file": "\/trunk\/reviewboard\/urls.py", "dest_file": "\/trunk\/reviewboard\/urls.py", "diff_base64": "LS0tIHVybHMucHkJKHJldmlzaW9uIDU1MCkKKysrIHVybHMucHkJKHdvcmtpbmcgY29weSkKQEAg\nLTExNCw3ICsxMTQsOCBAQAogCiAgICAgIyBBdXRoZW50aWNhdGlvbiBhbmQgYWNjb3VudHMKICAg\nICAocideYWNjb3VudC9sb2dpbi8kJywgJ2RqYmxldHMuYXV0aC52aWV3cy5sb2dpbicsCi0gICAg\nIHsnbmV4dF9wYWdlJzogJy9kYXNoYm9hcmQvJ30pLAorICAgICB7J25leHRfcGFnZSc6ICcvZGFz\naGJvYXJkLycsCisgICAgICAnZXh0cmFfY29udGV4dCc6IHsnQlVJTFRJTl9BVVRIJzogc2V0dGlu\nZ3MuQlVJTFRJTl9BVVRIfX0pLAogICAgIChyJ15hY2NvdW50L2xvZ291dC8kJywgJ2RqYW5nby5j\nb250cmliLmF1dGgudmlld3MubG9nb3V0JywKICAgICAgeyduZXh0X3BhZ2UnOiBzZXR0aW5ncy5M\nT0dJTl9VUkx9KSwKICAgICAocideYWNjb3VudC9wcmVmZXJlbmNlcy8kJywgJ3Jldmlld2JvYXJk\nLmFjY291bnRzLnZpZXdzLnVzZXJfcHJlZmVyZW5jZXMnLCksCkBAIC0xMjUsNiArMTI2LDExIEBA\nCiAgICAgICAgIChyJ15hY2NvdW50L3JlZ2lzdGVyLyQnLCAnZGpibGV0cy5hdXRoLnZpZXdzLnJl\nZ2lzdGVyJywKICAgICAgICAgIHsnbmV4dF9wYWdlJzogJy9kYXNoYm9hcmQvJ30pLAogICAgICkK\nK2Vsc2U6CisgICAgdXJscGF0dGVybnMgKz0gcGF0dGVybnMoJycsCisgICAgICAgIChyJ15hY2Nv\ndW50L3JlZ2lzdGVyLyQnLAorICAgICAgICAgJ2RqYW5nby52aWV3cy5nZW5lcmljLnNpbXBsZS5y\nZWRpcmVjdF90bycsCisgICAgICAgICB7J3VybCc6ICcvYWNjb3VudC9sb2dpbi8nfSkpCiAKICMg\nQWRkIHN0YXRpYyBtZWRpYSBpZiBydW5uaW5nIGluIERFQlVHIG1vZGUKIGlmIHNldHRpbmdzLkRF\nQlVHOgo=\n"}}]
+[{"pk": "1", "model": "reviews.comment", "fields": {"num_lines": 9, "timestamp": "2007-06-24 00:21:45", "text": "Sample comment.", "reply_to": null, "first_line": 333, "filediff": 11}}, {"pk": "2", "model": "reviews.comment", "fields": {"num_lines": 9, "timestamp": "2007-06-24 00:22:48", "text": "Generic reply", "reply_to": 1, "first_line": 333, "filediff": 11}}, {"pk": "3", "model": "reviews.comment", "fields": {"num_lines": 1, "timestamp": "2007-06-24 00:23:43", "text": "Sample comment 1", "reply_to": null, "first_line": 433, "filediff": 14}}, {"pk": "4", "model": "reviews.comment", "fields": {"num_lines": 1, "timestamp": "2007-06-24 00:24:28", "text": "Sample comment 2", "reply_to": null, "first_line": 449, "filediff": 14}}, {"pk": "1", "model": "reviews.group", "fields": {"display_name": "Dev Group", "name": "devgroup", "mailing_list": "devgroup@example.com", "users": [2, 3]}}, {"pk": "2", "model": "reviews.group", "fields": {"display_name": "New Group", "name": "newgroup", "mailing_list": "newgroup@example.com", "users": []}}, {"pk": "3", "model": "reviews.group", "fields": {"display_name": "Empty Group", "name": "emptygroup", "mailing_list": "", "users": []}}, {"pk": "4", "model": "reviews.group", "fields": {"display_name": "Private Group", "name": "privgroup", "mailing_list": "", "users": [2, 3, 4]}}, {"pk": "1", "model": "reviews.review", "fields": {"body_top": "Looks fine.", "ship_it": true, "timestamp": "2007-06-24 00:16:41", "base_reply_to": null, "email_message_id": "", "comments": [], "body_bottom_reply_to": null, "screenshot_comments": [], "user": 2, "body_bottom": "", "time_emailed": null, "body_top_reply_to": null, "review_request": 2, "public": true, "reviewed_diffset": 2}}, {"pk": "2", "model": "reviews.review", "fields": {"body_top": "Test", "ship_it": false, "timestamp": "2007-06-24 00:21:45", "base_reply_to": null, "email_message_id": "", "comments": [1], "body_bottom_reply_to": null, "screenshot_comments": [], "user": 2, "body_bottom": "", "time_emailed": null, "body_top_reply_to": null, "review_request": 3, "public": true, "reviewed_diffset": 3}}, {"pk": "3", "model": "reviews.review", "fields": {"body_top": "", "ship_it": false, "timestamp": "2007-06-24 00:22:48", "base_reply_to": 2, "email_message_id": "", "comments": [2], "body_bottom_reply_to": null, "screenshot_comments": [], "user": 3, "body_bottom": "", "time_emailed": null, "body_top_reply_to": null, "review_request": 3, "public": true, "reviewed_diffset": 3}}, {"pk": "4", "model": "reviews.review", "fields": {"body_top": "", "ship_it": false, "timestamp": "2007-06-24 00:23:43", "base_reply_to": null, "email_message_id": "", "comments": [3, 4], "body_bottom_reply_to": null, "screenshot_comments": [], "user": 3, "body_bottom": "", "time_emailed": null, "body_top_reply_to": null, "review_request": 3, "public": true, "reviewed_diffset": 3}}, {"pk": "5", "model": "reviews.review", "fields": {"body_top": "Grumpy body", "ship_it": false, "timestamp": "2007-06-24 00:25:33", "base_reply_to": null, "email_message_id": "", "comments": [], "body_bottom_reply_to": null, "screenshot_comments": [], "user": 4, "body_bottom": "", "time_emailed": null, "body_top_reply_to": null, "review_request": 3, "public": true, "reviewed_diffset": 3}}, {"pk": "6", "model": "reviews.review", "fields": {"body_top": "Dopey reply", "ship_it": false, "timestamp": "2007-06-24 00:25:52", "base_reply_to": 5, "email_message_id": "", "comments": [], "body_bottom_reply_to": null, "screenshot_comments": [], "user": 3, "body_bottom": "", "time_emailed": null, "body_top_reply_to": 5, "review_request": 3, "public": true, "reviewed_diffset": 3}}, {"pk": "7", "model": "reviews.review", "fields": {"body_top": "Grumpy reply", "ship_it": false, "timestamp": "2007-06-24 00:26:03", "base_reply_to": 5, "email_message_id": "", "comments": [], "body_bottom_reply_to": null, "screenshot_comments": [], "user": 4, "body_bottom": "", "time_emailed": null, "body_top_reply_to": 5, "review_request": 3, "public": true, "reviewed_diffset": 3}}, {"pk": "5", "model": "reviews.reviewrequest", "fields": {"status": "D", "last_updated": "2007-06-24 01:11:34", "description": "", "repository": 1, "inactive_screenshots": [], "target_groups": [], "email_message_id": "", "summary": "Added interdiff support", "changenum": null, "target_people": [2], "testing_done": "", "diffset_history": 5, "branch": "", "submitter": 2, "time_emailed": null, "time_added": "2007-06-24 00:45:13", "bugs_closed": "", "screenshots": [], "public": false}}, {"pk": "4", "model": "reviews.reviewrequest", "fields": {"status": "P", "last_updated": "2007-06-24 01:11:24", "description": "Test description.", "repository": 1, "inactive_screenshots": [], "target_groups": [], "email_message_id": "", "summary": "Made e-mail improvements", "changenum": 1234, "target_people": [2], "testing_done": "Tested.", "diffset_history": 4, "branch": "", "submitter": 4, "time_emailed": null, "time_added": "2007-06-24 00:42:42", "bugs_closed": "12345", "screenshots": [], "public": true}}, {"pk": "7", "model": "reviews.reviewrequest", "fields": {"status": "S", "last_updated": "2007-06-24 01:11:10", "description": "", "repository": 1, "inactive_screenshots": [], "target_groups": [], "email_message_id": "", "summary": "Improved login form", "changenum": null, "target_people": [1, 2], "testing_done": "", "diffset_history": 7, "branch": "", "submitter": 2, "time_emailed": null, "time_added": "2007-06-24 00:49:06", "bugs_closed": "", "screenshots": [], "public": true}}, {"pk": "6", "model": "reviews.reviewrequest", "fields": {"status": "P", "last_updated": "2007-06-24 01:10:59", "description": "Foo", "repository": 1, "inactive_screenshots": [], "target_groups": [3], "email_message_id": "", "summary": "Error dialog", "changenum": null, "target_people": [], "testing_done": "Bar", "diffset_history": 6, "branch": "trunk", "submitter": 3, "time_emailed": null, "time_added": "2007-06-24 00:47:14", "bugs_closed": "", "screenshots": [], "public": true}}, {"pk": "2", "model": "reviews.reviewrequest", "fields": {"status": "P", "last_updated": "2007-06-24 00:34:17", "description": "Be compatible with cleaned_data changes in Django.", "repository": 1, "inactive_screenshots": [], "target_groups": [1], "email_message_id": "", "summary": "Update for cleaned_data changes", "changenum": null, "target_people": [], "testing_done": "Works.", "diffset_history": 2, "branch": "trunk", "submitter": 3, "time_emailed": null, "time_added": "2007-06-24 00:14:32", "bugs_closed": "123", "screenshots": [], "public": true}}, {"pk": "1", "model": "reviews.reviewrequest", "fields": {"status": "P", "last_updated": "2007-06-24 00:32:47", "description": "", "repository": 1, "inactive_screenshots": [], "target_groups": [1], "email_message_id": "", "summary": "Comments Improvements", "changenum": null, "target_people": [], "testing_done": "", "diffset_history": 1, "branch": "trunk", "submitter": 2, "time_emailed": null, "time_added": "2007-06-24 00:12:44", "bugs_closed": "", "screenshots": [], "public": false}}, {"pk": "3", "model": "reviews.reviewrequest", "fields": {"status": "P", "last_updated": "2007-06-24 00:28:33", "description": "Added some user permissions checking for JSON API functions.", "repository": 1, "inactive_screenshots": [], "target_groups": [4], "email_message_id": null, "summary": "Add permission checking for JSON API", "changenum": null, "target_people": [2, 3], "testing_done": "Tested some functions.", "diffset_history": 3, "branch": "trunk", "submitter": 1, "time_emailed": null, "time_added": "2007-06-24 00:17:33", "bugs_closed": "1234, 5678, 8765, 4321", "screenshots": [], "public": true}}, {"pk": "1", "model": "diffviewer.diffset", "fields": {"name": "comments.diff", "repository": 1, "timestamp": "2007-06-24 00:12:57", "diffcompat": 1, "revision": 1, "history": 1}}, {"pk": "2", "model": "diffviewer.diffset", "fields": {"name": "cleaned_data.diff", "repository": 1, "timestamp": "2007-06-24 00:14:37", "diffcompat": 1, "revision": 1, "history": 2}}, {"pk": "3", "model": "diffviewer.diffset", "fields": {"name": "delete_review_req_permissions.diff", "repository": 1, "timestamp": "2007-06-24 00:17:47", "diffcompat": 1, "revision": 1, "history": 3}}, {"pk": "4", "model": "diffviewer.diffset", "fields": {"name": "email_improvements.diff", "repository": 1, "timestamp": "2007-06-24 00:42:45", "diffcompat": 1, "revision": 1, "history": 4}}, {"pk": "5", "model": "diffviewer.diffset", "fields": {"name": "interdiffs.diff", "repository": 1, "timestamp": "2007-06-24 00:45:25", "diffcompat": 1, "revision": 1, "history": 5}}, {"pk": "6", "model": "diffviewer.diffset", "fields": {"name": "error-output-dlg.diff", "repository": 1, "timestamp": "2007-06-24 00:47:18", "diffcompat": 1, "revision": 1, "history": 6}}, {"pk": "7", "model": "diffviewer.diffset", "fields": {"name": "improved-login-form.diff", "repository": 1, "timestamp": "2007-06-24 00:49:13", "diffcompat": 1, "revision": 1, "history": 7}}, {"pk": "1", "model": "diffviewer.diffsethistory", "fields": {"timestamp": "2007-06-24 00:12:44", "name": ""}}, {"pk": "2", "model": "diffviewer.diffsethistory", "fields": {"timestamp": "2007-06-24 00:14:32", "name": ""}}, {"pk": "3", "model": "diffviewer.diffsethistory", "fields": {"timestamp": "2007-06-24 00:17:33", "name": ""}}, {"pk": "4", "model": "diffviewer.diffsethistory", "fields": {"timestamp": "2007-06-24 00:42:42", "name": ""}}, {"pk": "5", "model": "diffviewer.diffsethistory", "fields": {"timestamp": "2007-06-24 00:45:13", "name": ""}}, {"pk": "6", "model": "diffviewer.diffsethistory", "fields": {"timestamp": "2007-06-24 00:47:14", "name": ""}}, {"pk": "7", "model": "diffviewer.diffsethistory", "fields": {"timestamp": "2007-06-24 00:49:06", "name": ""}}, {"pk": "1", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 1, "dest_detail": "(revision 321)", "source_revision": "320", "source_file": "\/trunk\/reviewboard\/reviews\/views.py", "dest_file": "\/trunk\/reviewboard\/reviews\/views.py", "diff": "LS0tIHJldmlld3Mvdmlld3MucHkJKHJldmlzaW9uIDMyMCkKKysrIHJldmlld3Mvdmlld3MucHkJ\nKHJldmlzaW9uIDMyMSkKQEAgLTEsMyArMSw0IEBACitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRl\ndGltZQogaW1wb3J0IHJlCiAKIGZyb20gZGphbmdvIGltcG9ydCBuZXdmb3JtcyBhcyBmb3JtcwpA\nQCAtMTEsOSArMTIsMTEgQEAKIGZyb20gZGphbmdvLnZpZXdzLmdlbmVyaWMubGlzdF9kZXRhaWwg\naW1wb3J0IG9iamVjdF9saXN0CiBmcm9tIGRqYmxldHMuYXV0aC51dGlsIGltcG9ydCBsb2dpbl9y\nZXF1aXJlZAogCi1mcm9tIHJldmlld2JvYXJkLmRpZmZ2aWV3ZXIubW9kZWxzIGltcG9ydCBEaWZm\nU2V0LCBEaWZmU2V0SGlzdG9yeQorZnJvbSByZXZpZXdib2FyZC5kaWZmdmlld2VyLm1vZGVscyBp\nbXBvcnQgRGlmZlNldCwgRGlmZlNldEhpc3RvcnksIEZpbGVEaWZmCiBmcm9tIHJldmlld2JvYXJk\nLmRpZmZ2aWV3ZXIudmlld3MgaW1wb3J0IHZpZXdfZGlmZiwgdmlld19kaWZmX2ZyYWdtZW50Citm\ncm9tIHJldmlld2JvYXJkLmRpZmZ2aWV3ZXIudmlld3MgaW1wb3J0IFVzZXJWaXNpYmxlRXJyb3Is\nIGdldF9kaWZmX2ZpbGVzCiBmcm9tIHJldmlld2JvYXJkLnJldmlld3MubW9kZWxzIGltcG9ydCBS\nZXZpZXdSZXF1ZXN0LCBSZXZpZXdSZXF1ZXN0RHJhZnQsIFF1aXAKK2Zyb20gcmV2aWV3Ym9hcmQu\ncmV2aWV3cy5tb2RlbHMgaW1wb3J0IFJldmlldywgQ29tbWVudAogZnJvbSByZXZpZXdib2FyZC5y\nZXZpZXdzLmZvcm1zIGltcG9ydCBOZXdSZXZpZXdSZXF1ZXN0Rm9ybQogZnJvbSByZXZpZXdib2Fy\nZCBpbXBvcnQgc2NtdG9vbHMKIApAQCAtNDA2LDMgKzQwOSw3NCBAQAogICAgICAgICByZXNwb25z\nZVsnWC1KU09OJ10gPSBkYXRhCiAKICAgICByZXR1cm4gcmVzcG9uc2UKKworCitAbG9naW5fcmVx\ndWlyZWQKK2RlZiBjb21tZW50cyhyZXF1ZXN0LCByZXZpZXdfcmVxdWVzdF9pZCwgZmlsZWRpZmZf\naWQsIGxpbmUsIHJldmlzaW9uPU5vbmUsCisgICAgICAgICAgICAgdGVtcGxhdGVfbmFtZT0ncmV2\naWV3cy9saW5lX2NvbW1lbnRzLmh0bWwnKToKKyAgICBsaW5lID0gaW50KGxpbmUpCisKKyAgICBy\nZXZpZXdfcmVxdWVzdCA9IGdldF9vYmplY3Rfb3JfNDA0KFJldmlld1JlcXVlc3QsIHBrPXJldmll\nd19yZXF1ZXN0X2lkKQorICAgIGZpbGVkaWZmID0gZ2V0X29iamVjdF9vcl80MDQoRmlsZURpZmYs\nIHBrPWZpbGVkaWZmX2lkKQorCisgICAgaWYgcmVxdWVzdC5QT1NUOgorICAgICAgICB0ZXh0ID0g\ncmVxdWVzdC5QT1NUWyd0ZXh0J10KKyAgICAgICAgbnVtX2xpbmVzID0gcmVxdWVzdC5QT1NUWydu\ndW1fbGluZXMnXQorCisgICAgICAgICMgVE9ETzogU2FuaXR5IGNoZWNrIHRoZSBmaWVsZHMKKyAg\nICAgICAgaWYgZmlsZWRpZmYuZGlmZnNldC5oaXN0b3J5ICE9IHJldmlld19yZXF1ZXN0LmRpZmZz\nZXRfaGlzdG9yeToKKyAgICAgICAgICAgIHJhaXNlIEh0dHA0MDMoKTsKKworCisgICAgICAgIGlm\nIHJlcXVlc3QuUE9TVFsnYWN0aW9uJ10gPT0gInNldCI6CisgICAgICAgICAgICByZXZpZXcsIHJl\ndmlld19pc19uZXcgPSBSZXZpZXcub2JqZWN0cy5nZXRfb3JfY3JlYXRlKAorICAgICAgICAgICAg\nICAgIHJldmlld19yZXF1ZXN0PXJldmlld19yZXF1ZXN0LAorICAgICAgICAgICAgICAgIHVzZXI9\ncmVxdWVzdC51c2VyLAorICAgICAgICAgICAgICAgIHB1YmxpYz1GYWxzZSwKKyAgICAgICAgICAg\nICAgICByZXZpZXdlZF9kaWZmc2V0PWZpbGVkaWZmLmRpZmZzZXQpCisKKyAgICAgICAgICAgIGlm\nIHJldmlld19pc19uZXc6CisgICAgICAgICAgICAgICAgcmV2aWV3LnNhdmUoKQorCisgICAgICAg\nICAgICBjb21tZW50LCBjb21tZW50X2lzX25ldyA9IHJldmlldy5jb21tZW50cy5nZXRfb3JfY3Jl\nYXRlKAorICAgICAgICAgICAgICAgIGZpbGVkaWZmPWZpbGVkaWZmLAorICAgICAgICAgICAgICAg\nIGZpcnN0X2xpbmU9bGluZSkKKworICAgICAgICAgICAgY29tbWVudC50ZXh0ID0gcmVxdWVzdC5Q\nT1NUWyd0ZXh0J10KKyAgICAgICAgICAgIGNvbW1lbnQubnVtX2xpbmVzID0gbnVtX2xpbmVzCisg\nICAgICAgICAgICBjb21tZW50LnRpbWVzdGFtcCA9IGRhdGV0aW1lLm5vdygpCisgICAgICAgICAg\nICBjb21tZW50LnNhdmUoKQorCisgICAgICAgICAgICByZXZpZXcuY29tbWVudHMuYWRkKGNvbW1l\nbnQpCisgICAgICAgICAgICByZXZpZXcuc2F2ZSgpCisgICAgICAgIGVsaWYgcmVxdWVzdC5QT1NU\nWydhY3Rpb24nXSA9PSAiZGVsZXRlIjoKKyAgICAgICAgICAgIHJldmlldyA9IGdldF9vYmplY3Rf\nb3JfNDA0KFJldmlldywKKyAgICAgICAgICAgICAgICByZXZpZXdfcmVxdWVzdD1yZXZpZXdfcmVx\ndWVzdCwKKyAgICAgICAgICAgICAgICB1c2VyPXJlcXVlc3QudXNlciwKKyAgICAgICAgICAgICAg\nICBwdWJsaWM9RmFsc2UsCisgICAgICAgICAgICAgICAgcmV2aWV3ZWRfZGlmZnNldD1maWxlZGlm\nZi5kaWZmc2V0KQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY29tbWVudCA9\nIHJldmlldy5jb21tZW50cy5nZXQoZmlsZWRpZmY9ZmlsZWRpZmYsCisgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfbGluZT1saW5lKQorICAgICAgICAg\nICAgICAgIGNvbW1lbnQuZGVsZXRlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBDb21tZW50LkRvZXNO\nb3RFeGlzdDoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIHN0cmlwcGVkX2Jv\nZHkgPSByZXZpZXcuYm9keS5zdHJpcCgpCisgICAgICAgICAgICBpZiAoc3RyaXBwZWRfYm9keSA9\nPSAie3tjb21tZW50c319IiBvciBzdHJpcHBlZF9ib2R5ID09ICIiKSBhbmQgXAorICAgICAgICAg\nICAgICAgcmV2aWV3LmNvbW1lbnRzLmNvdW50KCkgPT0gMDoKKyAgICAgICAgICAgICAgICByZXZp\nZXcuZGVsZXRlKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEh0dHA0MDMoKQor\nCisgICAgY29tbWVudHMgPSBbXQorICAgIGZvciBjb21tZW50IGluIGZpbGVkaWZmLmNvbW1lbnRf\nc2V0LmFsbCgpOgorICAgICAgICBpZiBjb21tZW50LnJldmlld19zZXQuY291bnQoKSA+IDAgYW5k\nIGNvbW1lbnQuZmlyc3RfbGluZSA9PSBsaW5lOgorICAgICAgICAgICAgcmV2aWV3ID0gY29tbWVu\ndC5yZXZpZXdfc2V0LmdldCgpCisgICAgICAgICAgICBpZiByZXZpZXcucHVibGljIG9yIHJldmll\ndy51c2VyID09IHJlcXVlc3QudXNlcjoKKyAgICAgICAgICAgICAgICBjb21tZW50cy5hcHBlbmQo\nY29tbWVudCkKKworICAgIHJldHVybiByZW5kZXJfdG9fcmVzcG9uc2UodGVtcGxhdGVfbmFtZSwg\nUmVxdWVzdENvbnRleHQocmVxdWVzdCwgeworICAgICAgICAnY29tbWVudHMnOiBjb21tZW50cywK\nKyAgICB9KSkK\n"}}, {"pk": "2", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 1, "dest_detail": "(revision 321)", "source_revision": "320", "source_file": "\/trunk\/reviewboard\/reviews\/models.py", "dest_file": "\/trunk\/reviewboard\/reviews\/models.py", "diff": "LS0tIHJldmlld3MvbW9kZWxzLnB5CShyZXZpc2lvbiAzMjApCisrKyByZXZpZXdzL21vZGVscy5w\neQkocmV2aXNpb24gMzIxKQpAQCAtMTYxLDcgKzE2MSw3IEBACiAgICAgdGltZXN0YW1wID0gbW9k\nZWxzLkRhdGVUaW1lRmllbGQoJ1RpbWVzdGFtcCcsIGF1dG9fbm93X2FkZD1UcnVlKQogICAgIHB1\nYmxpYyA9IG1vZGVscy5Cb29sZWFuRmllbGQoIlB1YmxpYyIsIGRlZmF1bHQ9RmFsc2UpCiAgICAg\nc2hpcF9pdCA9IG1vZGVscy5Cb29sZWFuRmllbGQoIlNoaXAgSXQiLCBkZWZhdWx0PUZhbHNlKQot\nICAgIGJvZHkgPSBtb2RlbHMuVGV4dEZpZWxkKCJCb2R5IikKKyAgICBib2R5ID0gbW9kZWxzLlRl\neHRGaWVsZCgiQm9keSIsIGRlZmF1bHQ9IlxuXG57e2NvbW1lbnRzfX0iKQogICAgIGNvbW1lbnRz\nID0gbW9kZWxzLk1hbnlUb01hbnlGaWVsZChDb21tZW50LCB2ZXJib3NlX25hbWU9IkNvbW1lbnRz\nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZT1GYWxzZSwgYmxh\nbms9VHJ1ZSkKICAgICByZXZpZXdlZF9kaWZmc2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoRGlmZlNl\ndCwgdmVyYm9zZV9uYW1lPSJSZXZpZXdlZCBEaWZmIiwK\n"}}, {"pk": "3", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 1, "dest_detail": "(revision 321)", "source_revision": "320", "source_file": "\/trunk\/reviewboard\/reviews\/templatetags\/reviewtags.py", "dest_file": "\/trunk\/reviewboard\/reviews\/templatetags\/reviewtags.py", "diff": "LS0tIHJldmlld3MvdGVtcGxhdGV0YWdzL3Jldmlld3RhZ3MucHkJKHJldmlzaW9uIDMyMCkKKysr\nIHJldmlld3MvdGVtcGxhdGV0YWdzL3Jldmlld3RhZ3MucHkJKHJldmlzaW9uIDMyMSkKQEAgLTEz\nMSw3ICsxMzEsNyBAQAogICAgIHJldHVybiBGb3JDb21tZW50KGZpbGVkaWZmLCByZXZpZXcsIG5v\nZGVsaXN0X2xvb3ApCiAKIAotY2xhc3MgQ29tbWVudEluZm8odGVtcGxhdGUuTm9kZSk6CitjbGFz\ncyBDb21tZW50Q291bnRzKHRlbXBsYXRlLk5vZGUpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBm\naWxlZGlmZik6CiAgICAgICAgIHNlbGYuZmlsZWRpZmYgPSBmaWxlZGlmZgogCkBAIC0xNDAsMzUg\nKzE0MCwzOSBAQAogICAgICAgICAgICAgZmlsZWRpZmYgPSByZXNvbHZlX3ZhcmlhYmxlKHNlbGYu\nZmlsZWRpZmYsIGNvbnRleHQpCiAgICAgICAgIGV4Y2VwdCBWYXJpYWJsZURvZXNOb3RFeGlzdDoK\nICAgICAgICAgICAgIHJhaXNlIHRlbXBsYXRlLlRlbXBsYXRlU3ludGF4RXJyb3IsIFwKLSAgICAg\nICAgICAgICAgICAiSW52YWxpZCB2YXJpYWJsZSAlcyBwYXNzZWQgdG8gY29tbWVudGluZm8gdGFn\nLiIgJSBcCisgICAgICAgICAgICAgICAgIkludmFsaWQgdmFyaWFibGUgJXMgcGFzc2VkIHRvIGNv\nbW1lbnRjb3VudHMgdGFnLiIgJSBcCiAgICAgICAgICAgICAgICAgc2VsZi5maWxlZGlmZgogCiAg\nICAgICAgIGNvbW1lbnRzID0ge30KKyAgICAgICAgdXNlciA9IGNvbnRleHQuZ2V0KCd1c2VyJywg\nTm9uZSkKIAogICAgICAgICBmb3IgY29tbWVudCBpbiBmaWxlZGlmZi5jb21tZW50X3NldC5hbGwo\nKToKLSAgICAgICAgICAgIGxpbmUgPSBjb21tZW50LmZpcnN0X2xpbmUKKyAgICAgICAgICAgIGlm\nIGNvbW1lbnQucmV2aWV3X3NldC5jb3VudCgpID4gMDoKKyAgICAgICAgICAgICAgICByZXZpZXcg\nPSBjb21tZW50LnJldmlld19zZXQuZ2V0KCkKKyAgICAgICAgICAgICAgICBpZiByZXZpZXcucHVi\nbGljIG9yIHJldmlldy51c2VyID09IHVzZXI6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBj\nb21tZW50LmZpcnN0X2xpbmUKIAotICAgICAgICAgICAgaWYgbm90IGNvbW1lbnRzLmhhc19rZXko\nbGluZSk6Ci0gICAgICAgICAgICAgICAgY29tbWVudHNbbGluZV0gPSBbXQorICAgICAgICAgICAg\nICAgICAgICBpZiBub3QgY29tbWVudHMuaGFzX2tleShsaW5lKToKKyAgICAgICAgICAgICAgICAg\nICAgICAgIGNvbW1lbnRzW2xpbmVdID0gW10KIAotICAgICAgICAgICAgY29tbWVudHNbbGluZV0u\nYXBwZW5kKHsKLSAgICAgICAgICAgICAgICAndGV4dCc6IGNvbW1lbnQudGV4dCwKLSAgICAgICAg\nICAgICAgICAndGltZXN0YW1wJzogY29tbWVudC50aW1lc3RhbXAuc3RyZnRpbWUoIiVZLSVtLSVk\nICVIOiVNOiVTIiksCi0gICAgICAgICAgICAgICAgJ251bV9saW5lcyc6IGNvbW1lbnQubnVtX2xp\nbmVzLAotICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAgICAgY29tbWVudHNbbGluZV0u\nYXBwZW5kKHsKKyAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0JzogY29tbWVudC50ZXh0LAor\nICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsZHJhZnQnOiByZXZpZXcudXNlciA9PSB1c2Vy\nIGFuZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCByZXZpZXcu\ncHVibGljLAorICAgICAgICAgICAgICAgICAgICB9KQogCiAgICAgICAgIHJldHVybiBzaW1wbGVq\nc29uLmR1bXBzKGNvbW1lbnRzKQogCiAKIEByZWdpc3Rlci50YWcKLWRlZiBjb21tZW50aW5mbyhw\nYXJzZXIsIHRva2VuKToKK2RlZiBjb21tZW50Y291bnRzKHBhcnNlciwgdG9rZW4pOgogICAgIHRy\neToKICAgICAgICAgdGFnX25hbWUsIGZpbGVkaWZmID0gdG9rZW4uc3BsaXRfY29udGVudHMoKQog\nICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICByYWlzZSB0ZW1wbGF0ZS5UZW1wbGF0ZVN5\nbnRheEVycm9yLCBcCiAgICAgICAgICAgICAiJXIgdGFnIHJlcXVpcmVzIGEgdGltZXN0YW1wIgog\nCi0gICAgcmV0dXJuIENvbW1lbnRJbmZvKGZpbGVkaWZmKQorICAgIHJldHVybiBDb21tZW50Q291\nbnRzKGZpbGVkaWZmKQogCiAKIEByZWdpc3Rlci5maWx0ZXIK\n"}}, {"pk": "4", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 1, "dest_detail": "(revision 321)", "source_revision": "320", "source_file": "\/trunk\/reviewboard\/reviews\/forms.py", "dest_file": "\/trunk\/reviewboard\/reviews\/forms.py", "diff": "LS0tIHJldmlld3MvZm9ybXMucHkJKHJldmlzaW9uIDMyMCkKKysrIHJldmlld3MvZm9ybXMucHkJ\nKHJldmlzaW9uIDMyMSkKQEAgLTQsNyArNCw3IEBACiBmcm9tIGRqYW5nby5jb250cmliLmF1dGgu\nbW9kZWxzIGltcG9ydCBVc2VyLCBHcm91cAogCiBmcm9tIHJldmlld2JvYXJkLmRpZmZ2aWV3ZXIu\nbW9kZWxzIGltcG9ydCBEaWZmU2V0SGlzdG9yeQotZnJvbSByZXZpZXdib2FyZC5yZXZpZXdzLm1v\nZGVscyBpbXBvcnQgUmV2aWV3UmVxdWVzdAorZnJvbSByZXZpZXdib2FyZC5yZXZpZXdzLm1vZGVs\ncyBpbXBvcnQgUmV2aWV3LCBSZXZpZXdSZXF1ZXN0CiAKIGNsYXNzIE5ld1Jldmlld1JlcXVlc3RG\nb3JtKGZvcm1zLkZvcm0pOgogICAgIHN1bW1hcnkgPSBmb3Jtcy5DaGFyRmllbGQobWF4X2xlbmd0\naD0zMDApCg==\n"}}, {"pk": "5", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 1, "dest_detail": "(revision 321)", "source_revision": "320", "source_file": "\/trunk\/reviewboard\/urls.py", "dest_file": "\/trunk\/reviewboard\/urls.py", "diff": "LS0tIHVybHMucHkJKHJldmlzaW9uIDMyMCkKKysrIHVybHMucHkJKHJldmlzaW9uIDMyMSkKQEAg\nLTg1LDYgKzg1LDEyIEBACiAgICAgKHInXnJldmlld3MvKD9QPHJldmlld19yZXF1ZXN0X2lkPlsw\nLTldKykvKD9QPG1ldGhvZD4oanNvbnx4bWwpKS8kJywKICAgICAgJ3Jldmlld2JvYXJkLnJldmll\nd3Mudmlld3MucmV2aWV3X3JlcXVlc3RfZmllbGQnKSwKIAorICAgICMgQ29tbWVudHMKKyAgICAo\ncidecmV2aWV3cy8oP1A8cmV2aWV3X3JlcXVlc3RfaWQ+WzAtOV0rKS9kaWZmL2NvbW1lbnRzLyg\/\nUDxmaWxlZGlmZl9pZD5bMC05XSspLyg\/UDxsaW5lPlswLTldKykvJCcsCisgICAgICdyZXZpZXdi\nb2FyZC5yZXZpZXdzLnZpZXdzLmNvbW1lbnRzJyksCisgICAgKHInXnJldmlld3MvKD9QPHJldmll\nd19yZXF1ZXN0X2lkPlswLTldKykvZGlmZi8oP1A8cmV2aXNpb24+WzAtOV0rKS9jb21tZW50cy8o\nP1A8ZmlsZWRpZmZfaWQ+WzAtOV0rKS8oP1A8bGluZT5bMC05XSspLyQnLAorICAgICAncmV2aWV3\nYm9hcmQucmV2aWV3cy52aWV3cy5jb21tZW50cycpLAorCiAgICAgIyBVc2VycwogICAgIChyJ151\nc2Vycy8kJywgJ3Jldmlld2JvYXJkLnJldmlld3Mudmlld3Muc3VibWl0dGVyX2xpc3QnLAogICAg\nICB7J3RlbXBsYXRlX25hbWUnOiAncmV2aWV3cy9zdWJtaXR0ZXJfbGlzdC5odG1sJ30pLAo=\n"}}, {"pk": "6", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 1, "dest_detail": "(revision 321)", "source_revision": "PRE-CREATION", "source_file": "\/trunk\/reviewboard\/templates\/reviews\/line_comments.html", "dest_file": "\/trunk\/reviewboard\/templates\/reviews\/line_comments.html", "diff": "LS0tIHRlbXBsYXRlcy9yZXZpZXdzL2xpbmVfY29tbWVudHMuaHRtbAkocmV2aXNpb24gMCkKKysr\nIHRlbXBsYXRlcy9yZXZpZXdzL2xpbmVfY29tbWVudHMuaHRtbAkocmV2aXNpb24gMzIxKQpAQCAt\nMCwwICsxLDEzIEBACis8b2wgaWQ9ImNvbW1lbnRzLWxpc3QiPgoreyUgZm9yIGNvbW1lbnQgaW4g\nY29tbWVudHMgJX0KKyA8bGkgY2xhc3M9ImNvbW1lbnQiPgorICA8ZGw+CisgICA8ZHQ+CisgICAg\nPGEgaHJlZj0ie3tjb21tZW50LnJldmlld19zZXQuZ2V0LnVzZXIuZ2V0X2Fic29sdXRlX3VybH19\nIj57JSBmaXJzdG9mIGNvbW1lbnQucmV2aWV3X3NldC5nZXQudXNlci5nZXRfZnVsbF9uYW1lIGNv\nbW1lbnQucmV2aWV3X3NldC5nZXQudXNlci51c2VybmFtZSAlfTwvYT4KKyAgICA8c3BhbiBjbGFz\ncz0idGltZXN0YW1wIj57e2NvbW1lbnQudGltZXN0YW1wfX08L3NwYW4+CisgICA8L2R0PgorICAg\nPGRkPjxwcmU+e3tjb21tZW50LnRleHR8ZXNjYXBlfX08L3ByZT48L2RkPgorICA8L2RsPgorIDwv\nbGk+Cit7JSBlbmRmb3IgJX0KKzwvb2w+Cg==\n"}}, {"pk": "7", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 1, "dest_detail": "(revision 321)", "source_revision": "320", "source_file": "\/trunk\/reviewboard\/templates\/diffviewer\/view_diff.html", "dest_file": "\/trunk\/reviewboard\/templates\/diffviewer\/view_diff.html", "diff": "LS0tIHRlbXBsYXRlcy9kaWZmdmlld2VyL3ZpZXdfZGlmZi5odG1sCShyZXZpc2lvbiAzMjApCisr\nKyB0ZW1wbGF0ZXMvZGlmZnZpZXdlci92aWV3X2RpZmYuaHRtbAkocmV2aXNpb24gMzIxKQpAQCAt\nNCwxMCArNCwxNSBAQAogeyUgYmxvY2sgdGl0bGUgJX1EaWZmIFZpZXdlcnslIGVuZGJsb2NrICV9\nCiB7JSBibG9jayBleHRyYWhlYWQgJX0KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz\ncmM9Ii9zY3JpcHRzL3l1aS95YWhvby95YWhvby1taW4uanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0\neXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3NjcmlwdHMveXVpL2FuaW1hdGlvbi9hbmltYXRp\nb24tbWluLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9\nIi9zY3JpcHRzL3l1aS9jb25uZWN0aW9uL2Nvbm5lY3Rpb24tbWluLmpzIj48L3NjcmlwdD4KIDxz\nY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9zY3JpcHRzL3l1aS9ldmVudC9ldmVu\ndC1taW4uanMiPjwvc2NyaXB0PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i\nL3NjcmlwdHMveXVpL2RvbS9kb20tbWluLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4\ndC9qYXZhc2NyaXB0IiBzcmM9Ii9zY3JpcHRzL3l1aS9kcmFnZHJvcC9kcmFnZHJvcC1taW4uanMi\nPjwvc2NyaXB0PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3NjcmlwdHMv\neXVpLWV4dC95dWktZXh0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3Jp\ncHQiIHNyYz0iL3NjcmlwdHMvcmIvY29yZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IGxhbmd1YWdl\nPSJqYXZhc2NyaXB0IiBzcmM9Ii9zY3JpcHRzL2RpZmZ2aWV3ZXIuanMiPjwvc2NyaXB0PgorPGxp\nbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL2Nzcy95dWktdWkuY3Nz\nIiAvPgogeyUgZW5kYmxvY2sgJX0KIAogeyUgYmxvY2sgY29udGVudCAlfQpAQCAtNDksMTEgKzU0\nLDI3IEBACiA8YSBuYW1lPSJ7e2ZpbGUuaW5kZXh9fSI+PC9hPgogeyUgaW5jbHVkZSAiZGlmZnZp\nZXdlci9kaWZmX2ZpbGVfZnJhZ21lbnQuaHRtbCIgJX0KIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFz\nY3JpcHQiPgotICBhZGRDb21tZW50cygiZmlsZXt7ZmlsZS5pbmRleH19IiwgeyUgY29tbWVudGlu\nZm8gZmlsZS5maWxlZGlmZiAlfSk7CisgIGdGaWxlQW5jaG9yVG9JZFsiZmlsZXt7ZmlsZS5pbmRl\neH19Il0gPSB7e2ZpbGUuZmlsZWRpZmYuaWR9fTsKKyAgYWRkQ29tbWVudHMoImZpbGV7e2ZpbGUu\naW5kZXh9fSIsIHslIGNvbW1lbnRjb3VudHMgZmlsZS5maWxlZGlmZiAlfSk7CiA8L3NjcmlwdD4K\nIHslIGVuZGZvciAlfQogPGEgbmFtZT0iaW5kZXhfZm9vdGVyIj48L2E+CiB7JSBpbmNsdWRlICJk\naWZmdmlld2VyL2NoYW5nZWluZGV4Lmh0bWwiICV9CiB7JSBlbmRpZiAlfQogPC9kaXY+CisKKzxk\naXYgaWQ9ImNvbW1lbnQtZGxnIj4KKyA8ZGl2IGNsYXNzPSJ5ZGxnLWhkIj5Db21tZW50czwvZGl2\nPgorIDxkaXYgY2xhc3M9InlkbGctYmQiPgorICA8ZGl2IGlkPSJ0YWItcmV2aWV3IiBjbGFzcz0i\neWRsZy10YWIiIHRpdGxlPSJSZXZpZXcgdGhpcyBsaW5lIj4KKyAgIDxmb3JtIGlkPSJjb21tZW50\nZm9ybSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249ImNvbW1lbnRzLyI+CisJPGlucHV0IHR5cGU9Imhp\nZGRlbiIgbmFtZT0iYWN0aW9uIiBpZD0iaWRfYWN0aW9uIiB2YWx1ZT0iIiAvPgorCTxpbnB1dCB0\neXBlPSJoaWRkZW4iIG5hbWU9Im51bV9saW5lcyIgaWQ9ImlkX251bV9saW5lcyIgdmFsdWU9IiIg\nLz4KKyAgICA8bGFiZWwgZm9yPSJpZF9jb21tZW50Ij5Db21tZW50PC9sYWJlbD4KKwk8dGV4dGFy\nZWEgaWQ9ImlkX2NvbW1lbnQiIG5hbWU9InRleHQiIHJvd3M9IjE1IiBjb2xzPSI0MCI+PC90ZXh0\nYXJlYT4KKyAgIDwvZm9ybT4KKyAgPC9kaXY+CisgIDxkaXYgaWQ9InRhYi1jb21tZW50cyIgY2xh\nc3M9InlkbGctdGFiIiB0aXRsZT0iQ29tbWVudHMiPgorIDwvZGl2PgorPC9kaXY+CiB7JSBlbmRi\nbG9jayAlfQo=\n"}}, {"pk": "8", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 2, "dest_detail": "(working copy)", "source_revision": "569", "source_file": "\/trunk\/reviewboard\/accounts\/views.py", "dest_file": "\/trunk\/reviewboard\/accounts\/views.py", "diff": "LS0tIGFjY291bnRzL3ZpZXdzLnB5CShyZXZpc2lvbiA1NjkpCisrKyBhY2NvdW50cy92aWV3cy5w\neQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsMTEgQEAKICAgICAgICAgZm9ybSA9IFByZWZl\ncmVuY2VzRm9ybShyZXF1ZXN0LlBPU1QpCiAKICAgICAgICAgaWYgZm9ybS5pc192YWxpZCgpOgot\nICAgICAgICAgICAgcmVxdWVzdC51c2VyLmdyb3VwX3NldCA9IGZvcm0uY2xlYW5fZGF0YVsnZ3Jv\ndXBzJ10KKyAgICAgICAgICAgICMgWFhYIENvbXBhdGliaWxpdHkgd2l0aCBEamFuZ28gMC45NiBh\nbmQgMS4wLgorICAgICAgICAgICAgZm9ybWRhdGEgPSBnZXRhdHRyKGZvcm0sICJjbGVhbmVkX2Rh\ndGEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoZm9ybSwgImNsZWFu\nX2RhdGEiLCBOb25lKSkKKworICAgICAgICAgICAgcmVxdWVzdC51c2VyLmdyb3VwX3NldCA9IGZv\ncm1kYXRhWydncm91cHMnXQogICAgICAgICAgICAgcmVxdWVzdC51c2VyLnNhdmUoKQogCiAgICAg\nICAgICAgICBwcm9maWxlLCBwcm9maWxlX2lzX25ldyA9IFwK\n"}}, {"pk": "9", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 2, "dest_detail": "(working copy)", "source_revision": "569", "source_file": "\/trunk\/reviewboard\/reviews\/forms.py", "dest_file": "\/trunk\/reviewboard\/reviews\/forms.py", "diff": "LS0tIHJldmlld3MvZm9ybXMucHkJKHJldmlzaW9uIDU2OSkKKysrIHJldmlld3MvZm9ybXMucHkJ\nKHdvcmtpbmcgY29weSkKQEAgLTQxLDE2ICs0MSwyMCBAQAogICAgICAgICByZXR1cm4gc2V0KHJl\nc3VsdCkKIAogICAgIGRlZiBjcmVhdGUoc2VsZiwgdXNlciwgZmlsZSk6Ci0gICAgICAgIHJlcG9z\naXRvcnkgPSBSZXBvc2l0b3J5Lm9iamVjdHMuZ2V0KHBrPXNlbGYuY2xlYW5fZGF0YVsncmVwb3Np\ndG9yeSddKQotICAgICAgICBjaGFuZ2VudW0gPSBzZWxmLmNsZWFuX2RhdGFbJ2NoYW5nZW51bSdd\nIG9yIE5vbmUKKyAgICAgICAgIyBYWFggQ29tcGF0aWJpbGl0eSB3aXRoIERqYW5nbyAwLjk2IGFu\nZCAxLjAuCisgICAgICAgIGZvcm1kYXRhID0gZ2V0YXR0cihzZWxmLCAiY2xlYW5lZF9kYXRhIiwK\nKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoc2VsZiwgImNsZWFuX2RhdGEiLCBO\nb25lKSkKIAorICAgICAgICByZXBvc2l0b3J5ID0gUmVwb3NpdG9yeS5vYmplY3RzLmdldChwaz1m\nb3JtZGF0YVsncmVwb3NpdG9yeSddKQorICAgICAgICBjaGFuZ2VudW0gPSBmb3JtZGF0YVsnY2hh\nbmdlbnVtJ10gb3IgTm9uZQorCiAgICAgICAgIHJldmlld19yZXF1ZXN0ID0gcmV2aWV3c19kYi5j\ncmVhdGVfcmV2aWV3X3JlcXVlc3QodXNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5LAogICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZW51bSkKIAog\nICAgICAgICBkaWZmX2Zvcm0gPSBVcGxvYWREaWZmRm9ybShkYXRhPXsKLSAgICAgICAgICAgICdi\nYXNlZGlyJzogc2VsZi5jbGVhbl9kYXRhWydiYXNlZGlyJ10sCi0gICAgICAgICAgICAncGF0aCc6\nIHNlbGYuY2xlYW5fZGF0YVsnZGlmZl9wYXRoJ10sCisgICAgICAgICAgICAnYmFzZWRpcic6IGZv\ncm1kYXRhWydiYXNlZGlyJ10sCisgICAgICAgICAgICAncGF0aCc6IGZvcm1kYXRhWydkaWZmX3Bh\ndGgnXSwKICAgICAgICAgICAgICdyZXBvc2l0b3J5aWQnOiByZXBvc2l0b3J5LmlkLAogICAgICAg\nICB9KQogICAgICAgICBkaWZmX2Zvcm0uZnVsbF9jbGVhbigpCkBAIC02NSwxMCArNjksMTQgQEAK\nICAgICBwYXRoID0gZm9ybXMuQ2hhckZpZWxkKHdpZGdldD1mb3Jtcy5GaWxlSW5wdXQoKSkKIAog\nICAgIGRlZiBjcmVhdGUoc2VsZiwgZGF0YSwgcmV2aWV3KToKKyAgICAgICAgIyBYWFggQ29tcGF0\naWJpbGl0eSB3aXRoIERqYW5nbyAwLjk2IGFuZCAxLjAuCisgICAgICAgIGZvcm1kYXRhID0gZ2V0\nYXR0cihzZWxmLCAiY2xlYW5lZF9kYXRhIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdl\ndGF0dHIoc2VsZiwgImNsZWFuX2RhdGEiLCBOb25lKSkKKwogICAgICAgICBkcmFmdCA9IFJldmll\nd1JlcXVlc3REcmFmdC5jcmVhdGUocmV2aWV3KQogCi0gICAgICAgIHNjcmVlbnNob3QgPSBTY3Jl\nZW5zaG90KGNhcHRpb249c2VsZi5jbGVhbl9kYXRhWydjYXB0aW9uJ10sCi0gICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgIGRyYWZ0X2NhcHRpb249c2VsZi5jbGVhbl9kYXRhWydjYXB0aW9u\nJ10pCisgICAgICAgIHNjcmVlbnNob3QgPSBTY3JlZW5zaG90KGNhcHRpb249Zm9ybWRhdGFbJ2Nh\ncHRpb24nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZnRfY2FwdGlvbj1m\nb3JtZGF0YVsnY2FwdGlvbiddKQogICAgICAgICBzY3JlZW5zaG90LnNhdmUoKQogICAgICAgICBz\nY3JlZW5zaG90LnNhdmVfaW1hZ2VfZmlsZShkYXRhWyJmaWxlbmFtZSJdLCBkYXRhWyJjb250ZW50\nIl0pCiAK\n"}}, {"pk": "10", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 2, "dest_detail": "(working copy)", "source_revision": "569", "source_file": "\/trunk\/reviewboard\/diffviewer\/forms.py", "dest_file": "\/trunk\/reviewboard\/diffviewer\/forms.py", "diff": "LS0tIGRpZmZ2aWV3ZXIvZm9ybXMucHkJKHJldmlzaW9uIDU2OSkKKysrIGRpZmZ2aWV3ZXIvZm9y\nbXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTE1LDggKzE1LDEyIEBACiAgICAgcGF0aCA9IGZvcm1z\nLkNoYXJGaWVsZCh3aWRnZXQ9Zm9ybXMuRmlsZUlucHV0KCkpCiAKICAgICBkZWYgY3JlYXRlKHNl\nbGYsIGZpbGUsIGRpZmZzZXRfaGlzdG9yeT1Ob25lKToKKyAgICAgICAgIyBYWFggQ29tcGF0aWJp\nbGl0eSB3aXRoIERqYW5nbyAwLjk2IGFuZCAxLjAuCisgICAgICAgIGZvcm1kYXRhID0gZ2V0YXR0\ncihzZWxmLCAiY2xlYW5lZF9kYXRhIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0\ndHIoc2VsZiwgImNsZWFuX2RhdGEiLCBOb25lKSkKKwogICAgICAgICAjIFBhcnNlIHRoZSBkaWZm\nCi0gICAgICAgIHJlcG9zaXRvcnkgPSBSZXBvc2l0b3J5Lm9iamVjdHMuZ2V0KHBrPXNlbGYuY2xl\nYW5fZGF0YVsncmVwb3NpdG9yeWlkJ10pCisgICAgICAgIHJlcG9zaXRvcnkgPSBSZXBvc2l0b3J5\nLm9iamVjdHMuZ2V0KHBrPWZvcm1kYXRhWydyZXBvc2l0b3J5aWQnXSkKIAogICAgICAgICBmaWxl\ncyA9IGRpZmZwYXJzZXIucGFyc2UoZmlsZVsiY29udGVudCJdKQogCkBAIC0yOSw3ICszMyw3IEBA\nCiAgICAgICAgIGlmIHRvb2wuZ2V0X2RpZmZzX3VzZV9hYnNvbHV0ZV9wYXRocygpOgogICAgICAg\nICAgICAgYmFzZWRpciA9ICcnCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBiYXNlZGlyID0g\nc3RyKHNlbGYuY2xlYW5fZGF0YVsnYmFzZWRpciddKSArICcvJworICAgICAgICAgICAgYmFzZWRp\nciA9IHN0cihmb3JtZGF0YVsnYmFzZWRpciddKSArICcvJwogCiAgICAgICAgIGZvciBmIGluIGZp\nbGVzOgogICAgICAgICAgICAgZjIsIHJldmlzaW9uID0gdG9vbC5wYXJzZV9kaWZmX3JldmlzaW9u\nKGYub3JpZ0ZpbGUsIGYub3JpZ0luZm8pCg==\n"}}, {"pk": "11", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 3, "dest_detail": "(working copy)", "source_revision": "579", "source_file": "\/trunk\/reviewboard\/reviews\/json.py", "dest_file": "\/trunk\/reviewboard\/reviews\/json.py", "diff": "LS0tIHJldmlld3MvanNvbi5weQkocmV2aXNpb24gNTc5KQorKysgcmV2aWV3cy9qc29uLnB5CSh3\nb3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAKIERPRVNfTk9UX0VYSVNUICAgICAgICAg\nICAgPSBKc29uRXJyb3IoMTAwLCAiT2JqZWN0IGRvZXMgbm90IGV4aXN0IikKIFBFUk1JU1NJT05f\nREVOSUVEICAgICAgICAgPSBKc29uRXJyb3IoMTAxLCAiWW91IGRvbid0IGhhdmUgcGVybWlzc2lv\nbiAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG8gYWNj\nZXNzIHRoaXMiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm\nb3IgdGhpcyIpCiBJTlZBTElEX0FUVFJJQlVURSAgICAgICAgID0gSnNvbkVycm9yKDEwMiwgIklu\ndmFsaWQgYXR0cmlidXRlIikKIE5PVF9MT0dHRURfSU4gICAgICAgICAgICAgPSBKc29uRXJyb3Io\nMTAzLCAiWW91IGFyZSBub3QgbG9nZ2VkIGluIikKIExPR0lOX0ZBSUxFRCAgICAgICAgICAgICAg\nPSBKc29uRXJyb3IoMTA0LCAiVGhlIHVzZXJuYW1lIG9yIHBhc3N3b3JkIHdhcyAiICsKQEAgLTY4\nLDYgKzY4LDIxIEBACiAgICAgcmV0dXJuIF9jaGVja2xvZ2luCiAKIAorZGVmIGpzb25fcGVybWlz\nc2lvbl9yZXF1aXJlZChwZXJtKToKKyAgICBkZWYgX2RlYyh2aWV3X2Z1bmMpOgorICAgICAgICBk\nZWYgX2NoZWNrcGVybWlzc2lvbnMocmVxdWVzdCwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAg\nICAgIGlmIG5vdCByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCgpOgorICAgICAgICAgICAg\nICAgIHJldHVybiBKc29uUmVzcG9uc2VFcnJvcihyZXF1ZXN0LCBOT1RfTE9HR0VEX0lOKQorICAg\nICAgICAgICAgZWxpZiBub3QgcmVxdWVzdC51c2VyLmhhc19wZXJtKHBlcm0pOgorICAgICAgICAg\nICAgICAgIHJldHVybiBKc29uUmVzcG9uc2VFcnJvcihyZXF1ZXN0LCBQRVJNSVNTSU9OX0RFTklF\nRCkKKworICAgICAgICAgICAgcmV0dXJuIHZpZXdfZnVuYyhyZXF1ZXN0LCAqYXJncywgKiprd2Fy\nZ3MpCisKKyAgICAgICAgcmV0dXJuIF9jaGVja3Blcm1pc3Npb25zCisKKyAgICByZXR1cm4gX2Rl\nYworCisKIGNsYXNzIFJldmlld0JvYXJkSlNPTkVuY29kZXIoRGF0ZVRpbWVBd2FyZUpTT05FbmNv\nZGVyKToKICAgICBkZWYgZGVmYXVsdChzZWxmLCBvKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShv\nLCBRdWVyeVNldCk6CkBAIC0zMTUsNiArMzMwLDE3IEBACiAgICAgICAgIHJldHVybiBKc29uUmVz\ncG9uc2VFcnJvcihyZXF1ZXN0LCBJTlZBTElEX0NIQU5HRV9OVU1CRVIpCiAKIAorQGpzb25fcGVy\nbWlzc2lvbl9yZXF1aXJlZCgncmV2aWV3cy5kZWxldGVfcmV2aWV3cmVxdWVzdCcpCitkZWYgcmV2\naWV3X3JlcXVlc3RfZGVsZXRlKHJlcXVlc3QsIHJldmlld19yZXF1ZXN0X2lkKToKKyAgICB0cnk6\nCisgICAgICAgIHJldmlld19yZXF1ZXN0ID0gUmV2aWV3UmVxdWVzdC5vYmplY3RzLmdldChwaz1y\nZXZpZXdfcmVxdWVzdF9pZCkKKyAgICAgICAgcmV2aWV3X3JlcXVlc3QuZGVsZXRlKCkKKyAgICBl\neGNlcHQgUmV2aWV3UmVxdWVzdC5Eb2VzTm90RXhpc3Q6CisgICAgICAgIHJldHVybiBKc29uUmVz\ncG9uc2VFcnJvcihyZXF1ZXN0LCBET0VTX05PVF9FWElTVCkKKworICAgIHJldHVybiBKc29uUmVz\ncG9uc2UocmVxdWVzdCkKKworCiBAanNvbl9sb2dpbl9yZXF1aXJlZAogZGVmIHJldmlld19yZXF1\nZXN0X2xpc3QocmVxdWVzdCwgZnVuYywgKiprd2FyZ3MpOgogICAgIHN0YXR1cyA9IHN0cmluZ190\nb19zdGF0dXMocmVxdWVzdC5HRVQuZ2V0KCdzdGF0dXMnLCAncGVuZGluZycpKQo=\n"}}, {"pk": "12", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 3, "dest_detail": "(working copy)", "source_revision": "575", "source_file": "\/trunk\/reviewboard\/reviews\/urls\/json.py", "dest_file": "\/trunk\/reviewboard\/reviews\/urls\/json.py", "diff": "LS0tIHJldmlld3MvdXJscy9qc29uLnB5CShyZXZpc2lvbiA1NzUpCisrKyByZXZpZXdzL3VybHMv\nanNvbi5weQkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsOSBAQAogICAgIChyJ15yZXZpZXdy\nZXF1ZXN0cy9yZXBvc2l0b3J5LyhQPHJlcG9zaXRvcnlfaWQ+WzAtOV0rKS9jaGFuZ2VudW0vKD9Q\nPGNoYW5nZW51bT5bMC05XSspLyQnLAogICAgICAncmV2aWV3X3JlcXVlc3RfYnlfY2hhbmdlbnVt\nJyksCiAKKyAgICAocidecmV2aWV3cmVxdWVzdHMvKD9QPHJldmlld19yZXF1ZXN0X2lkPlswLTld\nKykvZGVsZXRlLyQnLAorICAgICAncmV2aWV3X3JlcXVlc3RfZGVsZXRlJyksCisKICAgICAocide\ncmV2aWV3cmVxdWVzdHMvKD9QPHJldmlld19yZXF1ZXN0X2lkPlswLTldKykvdXBkYXRlX2Zyb21f\nY2hhbmdlbnVtLyQnLAogICAgICAncmV2aWV3X3JlcXVlc3RfZHJhZnRfdXBkYXRlX2Zyb21fY2hh\nbmdlbnVtJyksCiAK\n"}}, {"pk": "13", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 3, "dest_detail": "(revision 0)", "source_revision": "PRE-CREATION", "source_file": "\/trunk\/reviewboard\/htdocs\/images\/delete.svg", "dest_file": "\/trunk\/reviewboard\/htdocs\/images\/delete.svg", "diff": "LS0tIGh0ZG9jcy9pbWFnZXMvZGVsZXRlLnN2ZwkocmV2aXNpb24gMCkKKysrIGh0ZG9jcy9pbWFn\nZXMvZGVsZXRlLnN2ZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjUgQEAKKzw\/eG1sIHZlcnNp\nb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI\/PgorPCEtLSBDcmVhdGVk\nIHdpdGggSW5rc2NhcGUgKGh0dHA6Ly93d3cuaW5rc2NhcGUub3JnLykgLS0+Cis8c3ZnCisgICB4\nbWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCisgICB4bWxuczpjYz0i\naHR0cDovL3dlYi5yZXNvdXJjZS5vcmcvY2MvIgorICAgeG1sbnM6cmRmPSJodHRwOi8vd3d3Lncz\nLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIgorICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3\nLnczLm9yZy8yMDAwL3N2ZyIKKyAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIK\nKyAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgorICAgeG1sbnM6\nc29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAu\nZHRkIgorICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFj\nZXMvaW5rc2NhcGUiCisgICB3aWR0aD0iMTZweCIKKyAgIGhlaWdodD0iMTZweCIKKyAgIGlkPSJz\ndmcyMTYwIgorICAgc29kaXBvZGk6dmVyc2lvbj0iMC4zMiIKKyAgIGlua3NjYXBlOnZlcnNpb249\nIjAuNDUiCisgICBzb2RpcG9kaTpkb2NiYXNlPSIvaG9tZS9jaGlweDg2L3NyYy9yZXZpZXdib2Fy\nZC9odGRvY3MvaW1hZ2VzIgorICAgc29kaXBvZGk6ZG9jbmFtZT0iZGVsZXRlLnN2ZyIKKyAgIGlu\na3NjYXBlOm91dHB1dF9leHRlbnNpb249Im9yZy5pbmtzY2FwZS5vdXRwdXQuc3ZnLmlua3NjYXBl\nIgorICAgaW5rc2NhcGU6ZXhwb3J0LWZpbGVuYW1lPSIvaG9tZS9jaGlweDg2L3NyYy9yZXZpZXdi\nb2FyZC9odGRvY3MvaW1hZ2VzL2RlbGV0ZS5wbmciCisgICBpbmtzY2FwZTpleHBvcnQteGRwaT0i\nOTAiCisgICBpbmtzY2FwZTpleHBvcnQteWRwaT0iOTAiCisgICBzb2RpcG9kaTptb2RpZmllZD0i\ndHJ1ZSI+CisgIDxkZWZzCisgICAgIGlkPSJkZWZzMjE2MiI+CisgICAgPGxpbmVhckdyYWRpZW50\nCisgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50MzIxMiI+CisgICAgICA8c3RvcAorICAgICAgICAg\nc3R5bGU9InN0b3AtY29sb3I6I2VmMjkyOTtzdG9wLW9wYWNpdHk6MTsiCisgICAgICAgICBvZmZz\nZXQ9IjAiCisgICAgICAgICBpZD0ic3RvcDMyMTQiIC8+CisgICAgICA8c3RvcAorICAgICAgICAg\nc3R5bGU9InN0b3AtY29sb3I6I2VmMTMxMztzdG9wLW9wYWNpdHk6MTsiCisgICAgICAgICBvZmZz\nZXQ9IjEiCisgICAgICAgICBpZD0ic3RvcDMyMTYiIC8+CisgICAgPC9saW5lYXJHcmFkaWVudD4K\nKyAgICA8ZmlsdGVyCisgICAgICAgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIgorICAgICAgIGlk\nPSJmaWx0ZXIzMjAwIj4KKyAgICAgIDxmZUdhdXNzaWFuQmx1cgorICAgICAgICAgaW5rc2NhcGU6\nY29sbGVjdD0iYWx3YXlzIgorICAgICAgICAgc3RkRGV2aWF0aW9uPSIwLjY0MDcxMDg1IgorICAg\nICAgICAgaWQ9ImZlR2F1c3NpYW5CbHVyMzIwMiIgLz4KKyAgICA8L2ZpbHRlcj4KKyAgICA8bGlu\nZWFyR3JhZGllbnQKKyAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCisgICAgICAgeGxp\nbms6aHJlZj0iI2xpbmVhckdyYWRpZW50MzIxMiIKKyAgICAgICBpZD0ibGluZWFyR3JhZGllbnQz\nMjE4IgorICAgICAgIHgxPSI0LjIxODc1IgorICAgICAgIHkxPSI0LjM3NSIKKyAgICAgICB4Mj0i\nMTIuNzAzNDg1IgorICAgICAgIHkyPSIxMi44NTk3MzUiCisgICAgICAgZ3JhZGllbnRVbml0cz0i\ndXNlclNwYWNlT25Vc2UiCisgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjgyNzQx\nNTcsMCwwLDAuODI3NDE1NywxLjM3MjU4NDMsMS40MjExMjM2KSIgLz4KKyAgPC9kZWZzPgorICA8\nc29kaXBvZGk6bmFtZWR2aWV3CisgICAgIGlkPSJiYXNlIgorICAgICBwYWdlY29sb3I9IiNmZmZm\nZmYiCisgICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgorICAgICBib3JkZXJvcGFjaXR5PSIxLjAi\nCisgICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCisgICAgIGlua3NjYXBlOnBhZ2VzaGFk\nb3c9IjIiCisgICAgIGlua3NjYXBlOnpvb209IjQ1LjI1NDgzNCIKKyAgICAgaW5rc2NhcGU6Y3g9\nIjUuMjQyMzk4MyIKKyAgICAgaW5rc2NhcGU6Y3k9IjYuNTMxMjUiCisgICAgIGlua3NjYXBlOmN1\ncnJlbnQtbGF5ZXI9ImxheWVyMSIKKyAgICAgc2hvd2dyaWQ9ImZhbHNlIgorICAgICBpbmtzY2Fw\nZTpncmlkLWJib3g9InRydWUiCisgICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIKKyAg\nICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxNjAwIgorICAgICBpbmtzY2FwZTp3aW5kb3ctaGVp\nZ2h0PSIxMTI5IgorICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKKyAgICAgaW5rc2NhcGU6d2lu\nZG93LXk9IjQ3IiAvPgorICA8bWV0YWRhdGEKKyAgICAgaWQ9Im1ldGFkYXRhMjE2NSI+CisgICAg\nPHJkZjpSREY+CisgICAgICA8Y2M6V29yaworICAgICAgICAgcmRmOmFib3V0PSIiPgorICAgICAg\nICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KKyAgICAgICAgPGRjOnR5cGUK\nKyAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3Rp\nbGxJbWFnZSIgLz4KKyAgICAgIDwvY2M6V29yaz4KKyAgICA8L3JkZjpSREY+CisgIDwvbWV0YWRh\ndGE+CisgIDxnCisgICAgIGlkPSJsYXllcjEiCisgICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAx\nIgorICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIj4KKyAgICA8cGF0aAorICAgICAgIGlk\nPSJwYXRoMzE1NCIKKyAgICAgICBkPSJNIDMuODEyNSwxLjk2ODc1IEwgMS42ODc1LDQuMDkzNzUg\nTCA1LjkzNzUsOC4zMTI1IEwgMS42ODc1LDEyLjU2MjUgTCAzLjgxMjUsMTQuNjg3NSBMIDguMDYy\nNSwxMC40Mzc1IEwgMTIuMjgxMjUsMTQuNjg3NSBMIDE0LjQwNjI1LDEyLjU2MjUgTCAxMC4xODc1\nLDguMzEyNSBMIDE0LjQwNjI1LDQuMDkzNzUgTCAxMi4yODEyNSwxLjk2ODc1IEwgOC4wNjI1LDYu\nMTg3NSBMIDMuODEyNSwxLjk2ODc1IHogIgorICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuNjMxODY4\nMTM7ZmlsbDojMmUzNDM2O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZToj\nMmUzNDM2O3N0cm9rZS13aWR0aDoxO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2lu\nOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1k\nYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MTtmaWx0ZXI6dXJsKCNmaWx0ZXIzMjAwKSIKKyAg\nICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjgyNzQxNTcsMCwwLDAuODI3NDE1NywxLjM3MjU4NDMs\nMS40MjExMjM2KSIgLz4KKyAgICA8cGF0aAorICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDp1\ncmwoI2xpbmVhckdyYWRpZW50MzIxOCk7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87\nc3Ryb2tlOiNhNDAwMDA7c3Ryb2tlLXdpZHRoOjAuODI3NDE1NztzdHJva2UtbGluZWNhcDpidXR0\nO3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJy\nYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiCisgICAgICAgZD0i\nTSA0LjM3MTk2NjMsMi44OTQ5NTc5IEwgMi42MTM3MDc5LDQuNjUzMjE2MyBMIDYuMTMwMjI0Nyw4\nLjE0Mzg3NjQgTCAyLjYxMzcwNzksMTEuNjYwMzkzIEwgNC4zNzE5NjYzLDEzLjQxODY1MiBMIDcu\nODg4NDgzMSw5LjkwMjEzNDggTCAxMS4zNzkxNDMsMTMuNDE4NjUyIEwgMTMuMTM3NDAyLDExLjY2\nMDM5MyBMIDkuNjQ2NzQxNiw4LjE0Mzg3NjQgTCAxMy4xMzc0MDIsNC42NTMyMTYzIEwgMTEuMzc5\nMTQzLDIuODk0OTU3OSBMIDcuODg4NDgzMSw2LjM4NTYxOCBMIDQuMzcxOTY2MywyLjg5NDk1Nzkg\neiAiCisgICAgICAgaWQ9InJlY3QyMTY4IgorICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI5\nMCIKKyAgICAgICBpbmtzY2FwZTpleHBvcnQteWRwaT0iOTAiIC8+CisgICAgPHJlY3QKKyAgICAg\nICBzdHlsZT0ib3BhY2l0eTowLjMwNzY5MjM0O2ZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtm\naWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTtzdHJva2UtbGluZWNh\ncDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1k\nYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiCisgICAg\nICAgaWQ9InJlY3QzMTQ4IgorICAgICAgIHdpZHRoPSI1LjAwNDczNjkiCisgICAgICAgaGVpZ2h0\nPSIwLjgyNzQxNTk0IgorICAgICAgIHg9Ii01Ljk4OTA2NTYiCisgICAgICAgeT0iMTAuNTA1ODc5\nIgorICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuNzA3MTA2OCwtMC43MDcxMDY4LDAuNzA3MTA2\nOCwwLjcwNzEwNjgsMCwwKSIgLz4KKyAgICA8cmVjdAorICAgICAgIHN0eWxlPSJvcGFjaXR5OjAu\nMzA3NjkyMzQ7ZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0\ncm9rZTpub25lO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVq\nb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9r\nZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MSIKKyAgICAgICBpZD0icmVjdDMxNTAiCisg\nICAgICAgd2lkdGg9IjEuNjU0ODMxNCIKKyAgICAgICBoZWlnaHQ9IjAuODI3NDE1ODIiCisgICAg\nICAgeD0iLTEuMDI0OTkwMyIKKyAgICAgICB5PSI1LjUxMzI1NjUiCisgICAgICAgdHJhbnNmb3Jt\nPSJtYXRyaXgoMC43MDcxMDY4LC0wLjcwNzEwNjgsMC43MDcxMDY4LDAuNzA3MTA2OCwwLDApIiAv\nPgorICAgIDxyZWN0CisgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC43MDcxMDY4LC0wLjcwNzEw\nNjgsMC43MDcxMDY4LDAuNzA3MTA2OCwwLDApIgorICAgICAgIHk9IjEwLjQ4MDAyMyIKKyAgICAg\nICB4PSIwLjU5MjIyNTc5IgorICAgICAgIGhlaWdodD0iMC44Mjc0MTU5NCIKKyAgICAgICB3aWR0\naD0iNS4wMDQ3MzY5IgorICAgICAgIGlkPSJyZWN0MzE1MiIKKyAgICAgICBzdHlsZT0ib3BhY2l0\neTowLjMwNzY5MjM0O2ZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVy\nbztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1s\naW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtz\ndHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiIC8+CisgIDwvZz4KKzwvc3ZnPgo=\n"}}, {"pk": "14", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 3, "dest_detail": "(working copy)", "source_revision": "578", "source_file": "\/trunk\/reviewboard\/htdocs\/scripts\/reviews.js", "dest_file": "\/trunk\/reviewboard\/htdocs\/scripts\/reviews.js", "diff": "LS0tIGh0ZG9jcy9zY3JpcHRzL3Jldmlld3MuanMJKHJldmlzaW9uIDU3OCkKKysrIGh0ZG9jcy9z\nY3JpcHRzL3Jldmlld3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw5IEBACiB2YXIgZGgg\nPSBZQUhPTy5leHQuRG9tSGVscGVyOwogdmFyIGNvbW1lbnRUZW1wbGF0ZSA9IG51bGw7CiAKKy8v\nIERpYWxvZ3MKK3ZhciBnRGVsZXRlUmV2aWV3UmVxdWVzdERsZyA9IG51bGw7CisKIC8vIFN0YXRl\nIHZhcmlhYmxlcwogdmFyIGdDb21tZW50U2VjdGlvbnMgPSB7fTsKIHZhciBnWW91ckNvbW1lbnRz\nID0ge307CkBAIC0xMzEsNyArMTM0LDcgQEAKIAogCWRoLmFwcGVuZChnZXRFbCgnZXJyb3InKS5k\nb20sIHsKIAkJdGFnOiAnZGl2JywgaWQ6IGlkLCBjaGlsZHJlbjogWwotCQkJe3RhZzogJ2gxJywg\naHRtbDogJ0Vycm9yOid9LAorCQkJe3RhZzogJ2gxJywgaHRtbDogJ0Vycm9yOiAnfSwKIAkJCXto\ndG1sOiB0ZXh0fSwKIAkJCXt0YWc6ICdpbnB1dCcsIHR5cGU6ICdzdWJtaXQnLAogCQkJIHZhbHVl\nOiAnRGlzbWlzcycsIG9uQ2xpY2s6IGNsb3NlSGFuZGxlcn0KQEAgLTE0Miw3ICsxNDUsNyBAQAog\nCiBmdW5jdGlvbiBzaG93U2VydmVyRXJyb3Ioc3BlY2lmaWMpIHsKIAlzaG93RXJyb3Ioc3BlY2lm\naWMgKwotCSAgICAgICAgICAiIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuIElmIHRoaXMgY29udGlu\ndWVzIHRvIiArCisJICAgICAgICAgICIuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuIElmIHRoaXMg\nY29udGludWVzIHRvIiArCiAJICAgICAgICAgICIgaGFwcGVuLCBwbGVhc2UgcmVwb3J0IGl0IHRv\nIHlvdXIgYWRtaW5pc3RyYXRvciIpOwogfQogCkBAIC00MjYsMyArNDI5LDM0IEBACiAJCXdpbmRv\ndy5sb2NhdGlvbiA9IG5vcm1hbGl6ZVVSTCh3aW5kb3cubG9jYXRpb24uaHJlZikgKyAiL3B1Ymxp\nc2gvIjsKIAl9CiB9CisKK2Z1bmN0aW9uIGRlbGV0ZVJldmlld1JlcXVlc3QoKSB7CisJaWYgKCFn\nRGVsZXRlUmV2aWV3UmVxdWVzdERsZykgeworCQlnRGVsZXRlUmV2aWV3UmVxdWVzdERsZyA9IG5l\ndyBSQi5kaWFsb2dzLk1lc3NhZ2VEaWFsb2coeworCQkJdGl0bGU6ICJDb25maXJtIERlbGV0aW9u\nIiwKKwkJCXN1bW1hcnk6ICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgcmV2\naWV3IHJlcXVlc3Q\/IiwKKwkJCWRlc2NyaXB0aW9uOiAiVGhpcyBhY3Rpb24gaXMgaXJyZXZlcnNp\nYmxlLiIsCisJCQlidXR0b25zOiBbeworCQkJCXRleHQ6ICJEZWxldGUiLAorCQkJCWNiOiBvbkRl\nbGV0ZVJldmlld1JlcXVlc3RDb25maXJtZWQKKwkJCX0sIHsKKwkJCQl0ZXh0OiAiQ2FuY2VsIiwK\nKwkJCQlkZWZhdWx0OiB0cnVlCisJCQl9XQorCQl9KTsKKwl9CisKKwlnRGVsZXRlUmV2aWV3UmVx\ndWVzdERsZy5zaG93KGdldEVsKCJkZWxldGUtcmV2aWV3LXJlcXVlc3QtbGluayIpKTsKK30KKwor\nZnVuY3Rpb24gb25EZWxldGVSZXZpZXdSZXF1ZXN0Q29uZmlybWVkKCkgeworCWFzeW5jSnNvblJl\ncXVlc3QoIlBPU1QiLCBnZXRBcGlQYXRoKCkgKyAnL2RlbGV0ZS8nLCB7CisJCXN1Y2Nlc3M6IGZ1\nbmN0aW9uKHJzcCkgeworCQkJd2luZG93LmxvY2F0aW9uID0gIi8iOyAvLyBYWFggTmVlZCBhIGJl\ndHRlciBwYXRoLgorCQl9LAorCQlmYWlsdXJlOiBmdW5jdGlvbihlcnJtc2cpIHsKKwkJCXNob3dT\nZXJ2ZXJFcnJvcigiRGVsZXRpbmcgdGhlIHJldmlldyByZXF1ZXN0IGhhcyBmYWlsZWQgIiArCisJ\nCQkgICAgICAgICAgICAgICAgImR1ZSB0byBhIHNlcnZlciBlcnJvcjogIiArIGVycm1zZyk7CisJ\nCX0KKwl9KTsKK30K\n"}}, {"pk": "15", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 3, "dest_detail": "(revision 0)", "source_revision": "PRE-CREATION", "source_file": "\/trunk\/reviewboard\/htdocs\/scripts\/rb\/dialogs.js", "dest_file": "\/trunk\/reviewboard\/htdocs\/scripts\/rb\/dialogs.js", "diff": "LS0tIGh0ZG9jcy9zY3JpcHRzL3JiL2RpYWxvZ3MuanMJKHJldmlzaW9uIDApCisrKyBodGRvY3Mv\nc2NyaXB0cy9yYi9kaWFsb2dzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACitSQi5k\naWFsb2dzID0ge30KKworUkIuZGlhbG9ncy5NZXNzYWdlRGlhbG9nID0gZnVuY3Rpb24oY29uZmln\nKSB7CisgIHRoaXMuYnV0dG9ubGlzdCA9IGNvbmZpZy5idXR0b25zOworICBjb25maWcuYnV0dG9u\ncyA9IG51bGw7CisKKwlZQUhPTy5leHQudXRpbC5Db25maWcuYXBwbHkodGhpcywgY29uZmlnKTsK\nKworICB2YXIgZGggPSBZQUhPTy5leHQuRG9tSGVscGVyOworCisgIHRoaXMuZWwgPSBkaC5hcHBl\nbmQoZG9jdW1lbnQuYm9keSwgeworICAgIHRhZzogJ2RpdicsCisgICAgc3R5bGU6ICd2aXNpYmls\naXR5OiBoaWRkZW47IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7JywKKyAgICBjaGlsZHJl\nbjogW3sKKyAgICAgIHRhZzogJ2RpdicsCisgICAgICBjbHM6ICd5ZGxnLWhkJywKKyAgICAgIGh0\nbWw6IHRoaXMudGl0bGUKKyAgICB9LCB7CisgICAgICB0YWc6ICdkaXYnLAorICAgICAgY2xzOiAn\neWRsZy1iZCcsCisgICAgICBjaGlsZHJlbjogW3sKKyAgICAgICAgdGFnOiAnaDEnLAorICAgICAg\nICBodG1sOiB0aGlzLnN1bW1hcnkKKyAgICAgIH0sIHsKKyAgICAgICAgdGFnOiAncCcsCisgICAg\nICAgIGh0bWw6IHRoaXMuZGVzY3JpcHRpb24KKyAgICAgIH1dCisgICAgfV0KKyAgfSwgdHJ1ZSk7\nCisKKyAgUkIuZGlhbG9ncy5NZXNzYWdlRGlhbG9nLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2Fs\nbCh0aGlzLCB0aGlzLmVsLCB7CisgICAgc2hhZG93OiB0cnVlLAorICAgIHdpZHRoOiB0aGlzLndp\nZHRoIHx8IDM1MCwKKyAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0IHx8IDIwMCwKKyAgICBtaW5XaWR0\naDogdGhpcy5taW5XaWR0aCB8fCAzNTAsCisgICAgbWluSGVpZ2h0OiB0aGlzLm1pbkhlaWdodCB8\nfCAyMDAsCisgICAgcHJveHlEcmFnOiB0cnVlCisgIH0pOworCisgIHRoaXMuYWRkS2V5TGlzdGVu\nZXIoMjcsIHRoaXMuaGlkZSwgdGhpcyk7CisKKyAgaWYgKHRoaXMuYnV0dG9ubGlzdCkgeworICAg\nIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5idXR0b25saXN0Lmxlbmd0aDsgaSsrKSB7CisgICAg\nICB2YXIgYnV0dG9uID0gdGhpcy5hZGRCdXR0b24odGhpcy5idXR0b25saXN0W2ldLnRleHQsIGZ1\nbmN0aW9uKGNiKSB7CisgICAgICAgIHRoaXMuaGlkZSgpOworCisgICAgICAgIGlmIChjYikgewor\nICAgICAgICAgIGNiKCk7CisgICAgICAgIH0KKyAgICAgIH0uY3JlYXRlRGVsZWdhdGUodGhpcywg\nW3RoaXMuYnV0dG9ubGlzdFtpXS5jYl0pKTsKKworICAgICAgaWYgKHRoaXMuYnV0dG9ubGlzdFtp\nXS5pc19kZWZhdWx0KSB7CisgICAgICAgIHRoaXMuc2V0RGVmYXVsdEJ1dHRvbihidXR0b24pOwor\nICAgICAgfQorICAgIH0KKyAgfQorfQorCitZQUhPTy5leHRlbmRYKFJCLmRpYWxvZ3MuTWVzc2Fn\nZURpYWxvZywgWUFIT08uZXh0LkJhc2ljRGlhbG9nKTsK\n"}}, {"pk": "16", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 3, "dest_detail": "(working copy)", "source_revision": "575", "source_file": "\/trunk\/reviewboard\/templates\/reviews\/review_request_box.html", "dest_file": "\/trunk\/reviewboard\/templates\/reviews\/review_request_box.html", "diff": "LS0tIHRlbXBsYXRlcy9yZXZpZXdzL3Jldmlld19yZXF1ZXN0X2JveC5odG1sCShyZXZpc2lvbiA1\nNzUpCisrKyB0ZW1wbGF0ZXMvcmV2aWV3cy9yZXZpZXdfcmVxdWVzdF9ib3guaHRtbAkod29ya2lu\nZyBjb3B5KQpAQCAtNzksNiArNzksOSBAQAogIHslIGVuZGlmICV9CiA8L2Rpdj4KIDx1bCBjbGFz\ncz0iY29udHJvbHMiPgoreyUgaWYgcGVybXMucmV2aWV3cy5kZWxldGVfcmV2aWV3cmVxdWVzdCAl\nfQorIDxsaT48YSBpZD0iZGVsZXRlLXJldmlldy1yZXF1ZXN0LWxpbmsiIGhyZWY9IiMiIG9uQ2xp\nY2s9ImRlbGV0ZVJldmlld1JlcXVlc3QoKTsiPjxpbWcgc3JjPSIvaW1hZ2VzL2RlbGV0ZS5wbmci\nIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgYm9yZGVyPSIwIiBhbHQ9IiIgLz4gRGVsZXRlPC9hPjwv\nbGk+Cit7JSBlbmRpZiAlfQogeyUgaWZlcXVhbCByZXF1ZXN0LnVzZXIgcmV2aWV3X3JlcXVlc3Qu\nc3VibWl0dGVyICV9CiB7JSAgaWYgcmV2aWV3X3JlcXVlc3RfZGV0YWlscy5wdWJsaWMgJX0KIHsl\nICAgIGlmZXF1YWwgcmV2aWV3X3JlcXVlc3RfZGV0YWlscy5zdGF0dXMgJ1AnICV9Cg==\n"}}, {"pk": "17", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 3, "dest_detail": "(working copy)", "source_revision": "575", "source_file": "\/trunk\/reviewboard\/templates\/reviews\/review_detail.html", "dest_file": "\/trunk\/reviewboard\/templates\/reviews\/review_detail.html", "diff": "LS0tIHRlbXBsYXRlcy9yZXZpZXdzL3Jldmlld19kZXRhaWwuaHRtbAkocmV2aXNpb24gNTc1KQor\nKysgdGVtcGxhdGVzL3Jldmlld3MvcmV2aWV3X2RldGFpbC5odG1sCSh3b3JraW5nIGNvcHkpCkBA\nIC03LDEzICs3LDE2IEBACiB7JSBibG9jayBleHRyYWhlYWQgJX0KIDxsaW5rIHJlbD0ic3R5bGVz\naGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii9jc3MvZGlmZnZpZXdlci5jc3MiIC8+CiA8bGlu\nayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIvY3NzL3Jldmlld3MuY3Nz\nIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL2Nzcy95\ndWktdWkuY3NzIiAvPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3Njcmlw\ndHMveXVpL3lhaG9vL3lhaG9vLW1pbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHR5cGU9InRleHQv\namF2YXNjcmlwdCIgc3JjPSIvc2NyaXB0cy95dWkvYW5pbWF0aW9uL2FuaW1hdGlvbi1taW4uanMi\nPjwvc2NyaXB0PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3NjcmlwdHMv\neXVpL2Nvbm5lY3Rpb24vY29ubmVjdGlvbi1taW4uanMiPjwvc2NyaXB0PgogPHNjcmlwdCB0eXBl\nPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3NjcmlwdHMveXVpL2V2ZW50L2V2ZW50LW1pbi5qcyI+\nPC9zY3JpcHQ+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvc2NyaXB0cy95\ndWkvZG9tL2RvbS1taW4uanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp\ncHQiIHNyYz0iL3NjcmlwdHMveXVpL3V0aWxpdGllcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0Pgog\nPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3NjcmlwdHMveXVpLWV4dC95dWkt\nZXh0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9z\nY3JpcHRzL3JiL2NvcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp\ncHQiIHNyYz0iL3NjcmlwdHMvcmIvZGlhbG9ncy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHR5cGU9\nInRleHQvamF2YXNjcmlwdCIgc3JjPSIvc2NyaXB0cy9yYi93aWRnZXRzLmpzIj48L3NjcmlwdD4K\nIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9zY3JpcHRzL3Jldmlld3MuanMi\nPjwvc2NyaXB0PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo=\n"}}, {"pk": "18", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 4, "dest_detail": "(revision 0)", "source_revision": "PRE-CREATION", "source_file": "\/trunk\/reviewboard\/reviews\/tests.py", "dest_file": "\/trunk\/reviewboard\/reviews\/tests.py", "diff": "LS0tIHJldmlld3MvdGVzdHMucHkJKHJldmlzaW9uIDApCisrKyByZXZpZXdzL3Rlc3RzLnB5CShy\nZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNyBAQAoraW1wb3J0IG9zCitpbXBvcnQgcmUKKworZnJv\nbSBkamFuZ28uY29uZiBpbXBvcnQgc2V0dGluZ3MKK2Zyb20gZGphbmdvLmNvbnRyaWIuYXV0aC5t\nb2RlbHMgaW1wb3J0IFVzZXIKK2Zyb20gZGphbmdvLmNvcmUgaW1wb3J0IG1haWwKK2Zyb20gZGph\nbmdvLnRlc3QgaW1wb3J0IFRlc3RDYXNlCisKK2Zyb20gcmV2aWV3Ym9hcmQucmV2aWV3cy5lbWFp\nbCBpbXBvcnQgZ2V0X2VtYWlsX2FkZHJlc3NfZm9yX3VzZXIsIFwKKyAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgZ2V0X2VtYWlsX2FkZHJlc3NfZm9yX2dyb3VwLCBcCisgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxfcmV2aWV3X3JlcXVlc3QsIG1h\naWxfcmV2aWV3LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxf\ncmVwbHksIG1haWxfZGlmZl91cGRhdGUKK2Zyb20gcmV2aWV3Ym9hcmQucmV2aWV3cy5tb2RlbHMg\naW1wb3J0IEdyb3VwLCBSZXZpZXdSZXF1ZXN0LCBSZXZpZXcKKworCitjbGFzcyBFbWFpbFRlc3Rz\nKFRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0cyB0aGUgZS1tYWlsIHN1cHBvcnQuCisgICAg\nIiIiCisgICAgZml4dHVyZXMgPSBbJ2VtYWlsX3Rlc3QnXQorCisgICAgZGVmIHNldFVwKHNlbGYp\nOgorICAgICAgICBzZXR0aW5ncy5TRU5EX1JFVklFV19NQUlMID0gVHJ1ZQorICAgICAgICBtYWls\nLm91dGJveCA9IFtdCisKKyAgICBkZWYgdGVzdE5ld1Jldmlld1JlcXVlc3RFbWFpbChzZWxmKToK\nKyAgICAgICAgIiIiCisgICAgICAgIFRlc3Qgc2VuZGluZyBhbiBlLW1haWwgd2hlbiBjcmVhdGlu\nZyBhIG5ldyByZXZpZXcgcmVxdWVzdC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldmlld19yZXF1\nZXN0ID0gUmV2aWV3UmVxdWVzdC5vYmplY3RzLmdldChzdWJtaXR0ZXJfX3VzZXJuYW1lPSJkb2Mi\nKQorICAgICAgICBtYWlsX3Jldmlld19yZXF1ZXN0KHJldmlld19yZXF1ZXN0LnN1Ym1pdHRlciwg\ncmV2aWV3X3JlcXVlc3QpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWFpbC5vdXRi\nb3gpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWwub3V0Ym94WzBdLnN1YmplY3Qs\nCisgICAgICAgICAgICAgICAgICAgICAgICAgIlJldmlldyBSZXF1ZXN0OiBNYWtlIGNsZWFuZWQg\nZGF0YSB3b3JrIHdpdGggIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9sZGVyIGFuZCBu\nZXdlciBuZXdmb3JtcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0VmFsaWRSZWNpcGllbnRzKFsiZ3J1\nbXB5IiwgImRvYyJdLCBbInJldmlld2JvYXJkIl0pCisKKyAgICBkZWYgdGVzdFJldmlld0VtYWls\nKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBzZW5kaW5nIGFuIGUtbWFpbCB3aGVu\nIHJlcGx5aW5nIHRvIGEgcmV2aWV3IHJlcXVlc3QuCisgICAgICAgICIiIgorICAgICAgICByZXZp\nZXcgPSBSZXZpZXcub2JqZWN0cy5nZXQocGs9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy\nZXZpZXcudXNlci51c2VybmFtZSwgImdydW1weSIpCisgICAgICAgIG1haWxfcmV2aWV3KHJldmll\ndy51c2VyLCByZXZpZXcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWFpbC5vdXRi\nb3gpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWwub3V0Ym94WzBdLnN1YmplY3Qs\nCisgICAgICAgICAgICAgICAgICAgICAgICAgIlJlOiBSZXZpZXcgUmVxdWVzdDogTWFrZSBjbGVh\nbmVkIGRhdGEgd29yayB3aXRoICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICJvbGRlciBh\nbmQgbmV3ZXIgbmV3Zm9ybXMiKQorICAgICAgICBzZWxmLmFzc2VydFZhbGlkUmVjaXBpZW50cyhb\nImdydW1weSIsICJkb2MiXSwgWyJyZXZpZXdib2FyZCJdKQorCisgICAgZGVmIHRlc3RSZXZpZXdS\nZXBseUVtYWlsKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBzZW5kaW5nIGFuIGUt\nbWFpbCB3aGVuIHJlcGx5aW5nIHRvIGEgcmV2aWV3LgorICAgICAgICAiIiIKKyAgICAgICAgYmFz\nZV9yZXZpZXcgPSBSZXZpZXcub2JqZWN0cy5nZXQocGs9MSkKKyAgICAgICAgcmVwbHkgPSBSZXZp\nZXcub2JqZWN0cy5nZXQoYmFzZV9yZXBseV90bz1iYXNlX3JldmlldywKKyAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgdXNlcl9fdXNlcm5hbWU9ImRvcGV5IikKKyAgICAgICAgbWFp\nbF9yZXBseShyZXBseS51c2VyLCByZXBseSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl\nbihtYWlsLm91dGJveCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbC5vdXRib3hb\nMF0uc3ViamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiUmU6IFJldmlldyBSZXF1ZXN0\nOiBNYWtlIGNsZWFuZWQgZGF0YSB3b3JrIHdpdGggIiArCisgICAgICAgICAgICAgICAgICAgICAg\nICAgIm9sZGVyIGFuZCBuZXdlciBuZXdmb3JtcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0VmFsaWRS\nZWNpcGllbnRzKFsiZ3J1bXB5IiwgImRvYyIsICJkb3BleSJdLCBbInJldmlld2JvYXJkIl0pCisK\nKyAgICBkZWYgdGVzdFVwZGF0ZVJldmlld1JlcXVlc3RFbWFpbChzZWxmKToKKyAgICAgICAgIiIi\nCisgICAgICAgIFRlc3Qgc2VuZGluZyBhbiBlLW1haWwgd2hlbiB1cGRhdGluZyBhIHJldmlldyBy\nZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmV2aWV3X3JlcXVlc3QgPSBSZXZpZXdSZXF1\nZXN0Lm9iamVjdHMuZ2V0KHN1Ym1pdHRlcl9fdXNlcm5hbWU9ImRvYyIpCisgICAgICAgIHJldmll\nd19yZXF1ZXN0LmVtYWlsX21lc3NhZ2VfaWQgPSAianVuayIKKyAgICAgICAgbWFpbF9yZXZpZXdf\ncmVxdWVzdChyZXZpZXdfcmVxdWVzdC5zdWJtaXR0ZXIsIHJldmlld19yZXF1ZXN0KQorCisgICAg\nICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWwub3V0Ym94KSwgMSkKKyAgICAgICAgc2VsZi5h\nc3NlcnRFcXVhbChtYWlsLm91dGJveFswXS5zdWJqZWN0LAorICAgICAgICAgICAgICAgICAgICAg\nICAgICJSZTogUmV2aWV3IFJlcXVlc3Q6IE1ha2UgY2xlYW5lZCBkYXRhIHdvcmsgd2l0aCAiICsK\nKyAgICAgICAgICAgICAgICAgICAgICAgICAib2xkZXIgYW5kIG5ld2VyIG5ld2Zvcm1zIikKKyAg\nICAgICAgc2VsZi5hc3NlcnRWYWxpZFJlY2lwaWVudHMoWyJncnVtcHkiLCAiZG9jIiwgImRvcGV5\nIl0sIFsicmV2aWV3Ym9hcmQiXSkKKworICAgIGRlZiB0ZXN0RGlmZlVwZGF0ZUVtYWlsKHNlbGYp\nOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBzZW5kaW5nIGFuIGUtbWFpbCB3aGVuIHJlcGx5\naW5nIHRvIGEgcmV2aWV3LgorICAgICAgICAiIiIKKyAgICAgICAgYmFzZV9yZXZpZXcgPSBSZXZp\nZXcub2JqZWN0cy5nZXQocGs9MSkKKyAgICAgICAgcmVwbHkgPSBSZXZpZXcub2JqZWN0cy5nZXQo\nYmFzZV9yZXBseV90bz1iYXNlX3JldmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgdXNlcl9fdXNlcm5hbWU9ImRvcGV5IikKKyAgICAgICAgbWFpbF9yZXBseShyZXBseS51\nc2VyLCByZXBseSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsLm91dGJveCks\nIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbC5vdXRib3hbMF0uc3ViamVjdCwKKyAg\nICAgICAgICAgICAgICAgICAgICAgICAiUmU6IFJldmlldyBSZXF1ZXN0OiBNYWtlIGNsZWFuZWQg\nZGF0YSB3b3JrIHdpdGggIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9sZGVyIGFuZCBu\nZXdlciBuZXdmb3JtcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0VmFsaWRSZWNpcGllbnRzKFsiZ3J1\nbXB5IiwgImRvYyIsICJkb3BleSJdLCBbInJldmlld2JvYXJkIl0pCisKKyAgICBkZWYgYXNzZXJ0\nVmFsaWRSZWNpcGllbnRzKHNlbGYsIHVzZXJfbGlzdCwgZ3JvdXBfbGlzdCk6CisgICAgICAgIHJl\nY2lwaWVudF9saXN0ID0gcmUuc3BsaXQociIsXHMqIiwgbWFpbC5vdXRib3hbMF0udG8pCisgICAg\nICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlY2lwaWVudF9saXN0KSwgbGVuKHVzZXJfbGlzdCkg\nKyBsZW4oZ3JvdXBfbGlzdCkpCisKKyAgICAgICAgZm9yIHVzZXIgaW4gdXNlcl9saXN0OgorICAg\nICAgICAgICAgc2VsZi5hc3NlcnRfKGdldF9lbWFpbF9hZGRyZXNzX2Zvcl91c2VyKAorICAgICAg\nICAgICAgICAgIFVzZXIub2JqZWN0cy5nZXQodXNlcm5hbWU9dXNlcikpIGluIHJlY2lwaWVudF9s\naXN0KQorCisgICAgICAgIGZvciBncm91cCBpbiBncm91cF9saXN0OgorICAgICAgICAgICAgc2Vs\nZi5hc3NlcnRfKGdldF9lbWFpbF9hZGRyZXNzX2Zvcl9ncm91cCgKKyAgICAgICAgICAgICAgICBH\ncm91cC5vYmplY3RzLmdldChuYW1lPWdyb3VwKSkgaW4gcmVjaXBpZW50X2xpc3QpCg==\n"}}, {"pk": "19", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 4, "dest_detail": "(working copy)", "source_revision": "639", "source_file": "\/trunk\/reviewboard\/reviews\/email.py", "dest_file": "\/trunk\/reviewboard\/reviews\/email.py", "diff": "LS0tIHJldmlld3MvZW1haWwucHkJKHJldmlzaW9uIDYzOSkKKysrIHJldmlld3MvZW1haWwucHkJ\nKHdvcmtpbmcgY29weSkKQEAgLTEsNzQgKzEsMTA2IEBACi1pbXBvcnQgdGltZQotaW1wb3J0IHNt\ndHBsaWIsIHJmYzgyMgotaW1wb3J0IHNvY2tldAotaW1wb3J0IHJhbmRvbQogZnJvbSBkYXRldGlt\nZSBpbXBvcnQgZGF0ZXRpbWUKIAogZnJvbSBkamFuZ28uY29uZiBpbXBvcnQgc2V0dGluZ3MKIGZy\nb20gZGphbmdvLmNvbnRyaWIuc2l0ZXMubW9kZWxzIGltcG9ydCBTaXRlCi1mcm9tIGRqYW5nby5j\nb3JlLm1haWwgaW1wb3J0IFNhZmVNSU1FVGV4dAorZnJvbSBkamFuZ28uY29yZS5tYWlsIGltcG9y\ndCBFbWFpbE1lc3NhZ2UKIGZyb20gZGphbmdvLnRlbXBsYXRlLmxvYWRlciBpbXBvcnQgcmVuZGVy\nX3RvX3N0cmluZwogCiBmcm9tIHJldmlld2JvYXJkLnJldmlld3MubW9kZWxzIGltcG9ydCBSZXZp\nZXdSZXF1ZXN0LCBSZXZpZXcKIAotRE5TX05BTUUgPSBzb2NrZXQuZ2V0ZnFkbigpCitkZWYgZ2V0\nX2VtYWlsX2FkZHJlc3NfZm9yX3VzZXIodSk6CisgICAgaWYgbm90IHUuZ2V0X2Z1bGxfbmFtZSgp\nOgorICAgICAgICByZXR1cm4gdXNlci5lbWFpbAorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAn\nJXMgPCVzPicgJSAodS5nZXRfZnVsbF9uYW1lKCksIHUuZW1haWwpCiAKKworZGVmIGdldF9lbWFp\nbF9hZGRyZXNzX2Zvcl9ncm91cChnKToKKyAgICByZXR1cm4gJyVzIDwlcz4nICUgKGcuZGlzcGxh\neV9uYW1lLCBnLm1haWxpbmdfbGlzdCkKKworCitjbGFzcyBTcGlmZnlFbWFpbE1lc3NhZ2UoRW1h\naWxNZXNzYWdlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3ViamVjdCwgYm9keSwgZnJvbV9l\nbWFpbCwgdG8sIGluX3JlcGx5X3RvKToKKyAgICAgICAgRW1haWxNZXNzYWdlLl9faW5pdF9fKHNl\nbGYsIHN1YmplY3QsIGJvZHksIGZyb21fZW1haWwsIHRvKQorICAgICAgICBzZWxmLmluX3JlcGx5\nX3RvID0gaW5fcmVwbHlfdG8KKyAgICAgICAgc2VsZi5tZXNzYWdlX2lkID0gTm9uZQorCisgICAg\nZGVmIG1lc3NhZ2Uoc2VsZik6CisgICAgICAgIG1zZyA9IHN1cGVyKEVtYWlsTWVzc2FnZSwgc2Vs\nZikubWVzc2FnZSgpCisKKyAgICAgICAgaWYgc2VsZi5pbl9yZXBseV90bzoKKyAgICAgICAgICAg\nIG1zZ1snSW4tUmVwbHktVG8nXSA9IGluX3JlcGx5X3RvCisgICAgICAgICAgICBtc2dbJ1JlZmVy\nZW5jZXMnXSA9IGluX3JlcGx5X3RvCisKKyAgICAgICAgc2VsZi5tZXNzYWdlX2lkID0gbXNnWydN\nZXNzYWdlLUlEJ10KKworICAgICAgICByZXR1cm4gbXNnCisKKwogZGVmIHNlbmRfcmV2aWV3X21h\naWwodXNlciwgcmV2aWV3X3JlcXVlc3QsIHN1YmplY3QsIGluX3JlcGx5X3RvLAotICAgICAgICAg\nICAgICAgICAgICAgdGVtcGxhdGVfbmFtZSwgY29udGV4dD17fSk6CisgICAgICAgICAgICAgICAg\nICAgICBleHRyYV9yZWNpcGllbnRzLCB0ZW1wbGF0ZV9uYW1lLCBjb250ZXh0PXt9KToKICAgICAi\nIiIKICAgICBGb3JtYXRzIGFuZCBzZW5kcyBhbiBlLW1haWwgb3V0IHdpdGggdGhlIGN1cnJlbnQg\nZG9tYWluIGFuZCByZXZpZXcgcmVxdWVzdAogICAgIGJlaW5nIGFkZGVkIHRvIHRoZSB0ZW1wbGF0\nZSBjb250ZXh0LiBSZXR1cm5zIHRoZSByZXN1bHRpbmcgbWVzc2FnZSBJRC4KICAgICAiIiIKICAg\nICBjdXJyZW50X3NpdGUgPSBTaXRlLm9iamVjdHMuZ2V0KHBrPXNldHRpbmdzLlNJVEVfSUQpCiAK\nLSAgICBkZWYgZ2V0X2VtYWlsX3VzZXIodSk6Ci0gICAgICAgIGlmIG5vdCB1LmdldF9mdWxsX25h\nbWUoKToKLSAgICAgICAgICAgIHJldHVybiB1c2VyLmVtYWlsCi0gICAgICAgIGVsc2U6Ci0gICAg\nICAgICAgICByZXR1cm4gJyVzIDwlcz4nICUgKHUuZ2V0X2Z1bGxfbmFtZSgpLCB1LmVtYWlsKQor\nICAgIGZyb21fZW1haWwgPSBnZXRfZW1haWxfYWRkcmVzc19mb3JfdXNlcih1c2VyKQogCi0gICAg\nZnJvbV9lbWFpbCA9IGdldF9lbWFpbF91c2VyKHVzZXIpCisgICAgcmVjaXBpZW50X3RhYmxlID0g\neworICAgICAgICBmcm9tX2VtYWlsOiAxLAorICAgICAgICBnZXRfZW1haWxfYWRkcmVzc19mb3Jf\ndXNlcihyZXZpZXdfcmVxdWVzdC5zdWJtaXR0ZXIpOiAxLAorICAgIH0KIAotICAgIHJlY2lwaWVu\ndF9saXN0ID0gXAotICAgICAgICBbZ2V0X2VtYWlsX3VzZXIodSkgZm9yIHUgaW4gcmV2aWV3X3Jl\ncXVlc3QudGFyZ2V0X3Blb3BsZS5hbGwoKV0gKyBcCi0gICAgICAgIFsnJXMgPCVzPicgJSAoZ3Jv\ndXAuZGlzcGxheV9uYW1lLCBncm91cC5tYWlsaW5nX2xpc3QpIFwKLSAgICAgICAgICAgIGZvciBn\ncm91cCBpbiByZXZpZXdfcmVxdWVzdC50YXJnZXRfZ3JvdXBzLmFsbCgpXQorICAgIGZvciB1IGlu\nIHJldmlld19yZXF1ZXN0LnRhcmdldF9wZW9wbGUuYWxsKCk6CisgICAgICAgIHJlY2lwaWVudF90\nYWJsZVtnZXRfZW1haWxfYWRkcmVzc19mb3JfdXNlcih1KV0gPSAxCiAKLSAgICBpZiByZWNpcGll\nbnRfbGlzdCA9PSBbXToKLSAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBmb3IgZ3JvdXAgaW4gcmV2\naWV3X3JlcXVlc3QudGFyZ2V0X2dyb3Vwcy5hbGwoKToKKyAgICAgICAgcmVjaXBpZW50X3RhYmxl\nW2dldF9lbWFpbF9hZGRyZXNzX2Zvcl9ncm91cChncm91cCldID0gMQogCi0gICAgaWYgbm90IHVz\nZXIuZW1haWwgaW4gcmVjaXBpZW50X2xpc3Q6Ci0gICAgICAgIHJlY2lwaWVudF9saXN0ICs9IFt1\nc2VyLmVtYWlsXQorICAgIGlmIGV4dHJhX3JlY2lwaWVudHM6CisgICAgICAgIGZvciByZWNpcGll\nbnQgaW4gZXh0cmFfcmVjaXBpZW50czoKKyAgICAgICAgICAgIHJlY2lwaWVudF90YWJsZVtnZXRf\nZW1haWxfYWRkcmVzc19mb3JfdXNlcihyZWNpcGllbnQpXSA9IDEKIAorICAgIHJlY2lwaWVudF9s\naXN0ID0gW3JlY2lwaWVudCBmb3IgcmVjaXBpZW50IGluIHJlY2lwaWVudF90YWJsZV0KKwogICAg\nIGNvbnRleHRbJ2RvbWFpbiddID0gY3VycmVudF9zaXRlLmRvbWFpbgogICAgIGNvbnRleHRbJ3Jl\ndmlld19yZXF1ZXN0J10gPSByZXZpZXdfcmVxdWVzdAogICAgIGJvZHkgPSByZW5kZXJfdG9fc3Ry\naW5nKHRlbXBsYXRlX25hbWUsIGNvbnRleHQpCiAKLSAgICBzZXJ2ZXIgPSBzbXRwbGliLlNNVFAo\nc2V0dGluZ3MuRU1BSUxfSE9TVCwgc2V0dGluZ3MuRU1BSUxfUE9SVCkKLSAgICBpZiBzZXR0aW5n\ncy5FTUFJTF9IT1NUX1VTRVIgYW5kIHNldHRpbmdzLkVNQUlMX0hPU1RfUEFTU1dPUkQ6Ci0gICAg\nICAgIHNlcnZlci5sb2dpbihzZXR0aW5ncy5FTUFJTF9IT1NUX1VTRVIsCi0gICAgICAgICAgICAg\nICAgICAgICBzZXR0aW5ncy5FTUFJTF9IT1NUX1BBU1NXT1JEKQorICAgIG1lc3NhZ2UgPSBTcGlm\nZnlFbWFpbE1lc3NhZ2Uoc3ViamVjdC5zdHJpcCgpLCBib2R5LCBmcm9tX2VtYWlsLAorICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKHJlY2lwaWVudF9saXN0KSwKKyAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX3JlcGx5X3RvKQorICAgIG1lc3NhZ2Uu\nc2VuZCgpCiAKLSAgICBtc2cgPSBTYWZlTUlNRVRleHQoYm9keSwgJ3BsYWluJywgc2V0dGluZ3Mu\nREVGQVVMVF9DSEFSU0VUKQotICAgIG1zZ1snU3ViamVjdCddID0gc3ViamVjdC5zdHJpcCgpCi0g\nICAgbXNnWydGcm9tJ10gPSBmcm9tX2VtYWlsCi0gICAgbXNnWydUbyddID0gJywgJy5qb2luKHJl\nY2lwaWVudF9saXN0KQotICAgIG1zZ1snRGF0ZSddID0gcmZjODIyLmZvcm1hdGRhdGUoKQorICAg\nIHJldHVybiBtZXNzYWdlLm1lc3NhZ2VfaWQKIAotICAgIGlmIGluX3JlcGx5X3RvOgotICAgICAg\nICBtc2dbJ0luLVJlcGx5LVRvJ10gPSBpbl9yZXBseV90bwotICAgICAgICBtc2dbJ1JlZmVyZW5j\nZXMnXSA9IGluX3JlcGx5X3RvCiAKLSAgICB0cnk6Ci0gICAgICAgIHJhbmRvbV9iaXRzID0gc3Ry\nKHJhbmRvbS5nZXRyYW5kYml0cyg2NCkpCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOiAjIFB5\ndGhvbiAyLjMgZG9lc24ndCBoYXZlIHJhbmRvbS5nZXRyYW5kYml0cygpCi0gICAgICAgIHJhbmRv\nbV9iaXRzID0gJycuam9pbihbcmFuZG9tLmNob2ljZSgnMTIzNDU2Nzg5MCcpIGZvciBpIGluIHJh\nbmdlKDE5KV0pCitkZWYgaGFydmVzdF9wZW9wbGVfZnJvbV9yZXZpZXcocmV2aWV3KToKKyAgICAi\nIiIKKyAgICBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgcGVvcGxlIHdobyBoYXZlIGJlZW4gaW52b2x2\nZWQgaW4gdGhlIGRpc2N1c3Npb24gb24KKyAgICBhIHJldmlldy4KKyAgICAiIiIKIAotICAgIG1z\nZ1snTWVzc2FnZS1JRCddID0gIjwlZC4lc0Alcz4iICUgKHRpbWUudGltZSgpLCByYW5kb21fYml0\ncywgRE5TX05BTUUpCisgICAgIyBUaGlzIGxpc3QgY29tcHJlaGVuc2lvbiBnaXZlcyB1cyBldmVy\neSB1c2VyIGluIGV2ZXJ5IHJlcGx5LCByZWN1cnNpdmVseS4KKyAgICAjIEl0IGxvb2tzIHN0cmFu\nZ2UgYW5kIHBlcmhhcHMgYmFja3dhcmRzLCBidXQgd29ya3MuIFdlIGRvIGl0IHRoaXMgd2F5Cisg\nICAgIyBiZWNhdXNlIGhhcnZlc3RfcGVvcGxlX2Zyb21fcmV2aWV3IGdpdmVzIHVzIGEgbGlzdCBi\nYWNrLCB3aGljaCB3ZSBjYW4ndAorICAgICMgc3RpY2sgaW4gYXMgdGhlIHJlc3VsdCBmb3IgYSBz\ndGFuZGFyZCBsaXN0IGNvbXByZWhlbnNpb24uIFdlIGNvdWxkCisgICAgIyBvcHQgZm9yIGEgc2lt\ncGxlIGZvciBsb29wIGFuZCBjb25jZXRlbmF0ZSB0aGUgbGlzdCwgYnV0IHRoaXMgaXMgbW9yZQor\nICAgICMgZnVuLgorICAgIHJldHVybiBbcmV2aWV3LnVzZXJdICsgXAorICAgICAgICAgICBbdSBm\nb3IgcmVwbHkgaW4gcmV2aWV3LnJlcGxpZXMuYWxsKCkKKyAgICAgICAgICAgICAgZm9yIHUgaW4g\naGFydmVzdF9wZW9wbGVfZnJvbV9yZXZpZXcocmVwbHkpXQogCi0gICAgc2VydmVyLnNlbmRtYWls\nKGZyb21fZW1haWwsIHJlY2lwaWVudF9saXN0LCBtc2cuYXNfc3RyaW5nKCkpCiAKLSAgICByZXR1\ncm4gbXNnWydNZXNzYWdlLUlEJ10KK2RlZiBoYXJ2ZXN0X3Blb3BsZV9mcm9tX3Jldmlld19yZXF1\nZXN0KHJldmlld19yZXF1ZXN0KToKKyAgICAiIiIKKyAgICBSZXR1cm5zIGEgbGlzdCBvZiBhbGwg\ncGVvcGxlIHdobyBoYXZlIGJlZW4gaW52b2x2ZWQgaW4gYSBkaXNjdXNzaW9uIG9uCisgICAgYSBy\nZXZpZXcgcmVxdWVzdC4KKyAgICAiIiIKKyAgICAjIFNlZSB0aGUgY29tbWVudCBpbiBoYXJ2ZXN0\nX3Blb3BsZV9mcm9tX3JldmlldyBmb3IgdGhpcyBsaXN0CisgICAgIyBjb21wcmVoZW5zaW9uLgor\nICAgIHJldHVybiBbdSBmb3IgcmV2aWV3IGluIHJldmlld19yZXF1ZXN0LnJldmlld19zZXQuYWxs\nKCkKKyAgICAgICAgICAgICAgZm9yIHUgaW4gaGFydmVzdF9wZW9wbGVfZnJvbV9yZXZpZXcocmV2\naWV3KV0KIAogCiBkZWYgbWFpbF9yZXZpZXdfcmVxdWVzdCh1c2VyLCByZXZpZXdfcmVxdWVzdCk6\nCkBAIC04NCwxMSArMTE2LDE0IEBACiAgICAgaWYgcmV2aWV3X3JlcXVlc3QuZW1haWxfbWVzc2Fn\nZV9pZDoKICAgICAgICAgc3ViamVjdCA9ICJSZTogIiArIHN1YmplY3QKICAgICAgICAgcmVwbHlf\nbWVzc2FnZV9pZCA9IHJldmlld19yZXF1ZXN0LmVtYWlsX21lc3NhZ2VfaWQKKyAgICAgICAgZXh0\ncmFfcmVjaXBpZW50cyA9IGhhcnZlc3RfcGVvcGxlX2Zyb21fcmV2aWV3X3JlcXVlc3QocmV2aWV3\nX3JlcXVlc3QpCisgICAgZWxzZToKKyAgICAgICAgZXh0cmFfcmVjaXBpZW50cyA9IE5vbmUKIAog\nICAgIHJldmlld19yZXF1ZXN0LnRpbWVfZW1haWxlZCA9IGRhdGV0aW1lLm5vdygpCiAgICAgcmV2\naWV3X3JlcXVlc3QuZW1haWxfbWVzc2FnZV9pZCA9IFwKICAgICAgICAgc2VuZF9yZXZpZXdfbWFp\nbCh1c2VyLCByZXZpZXdfcmVxdWVzdCwgc3ViamVjdCwgcmVwbHlfbWVzc2FnZV9pZCwKLSAgICAg\nICAgICAgICAgICAgICAgICAgICAncmV2aWV3cy9yZXZpZXdfcmVxdWVzdF9lbWFpbC50eHQnKQor\nICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX3JlY2lwaWVudHMsICdyZXZpZXdzL3Jldmll\nd19yZXF1ZXN0X2VtYWlsLnR4dCcpCiAgICAgcmV2aWV3X3JlcXVlc3Quc2F2ZSgpCiAKIApAQCAt\nMTAyLDYgKzEzNyw3IEBACiAgICAgc2VuZF9yZXZpZXdfbWFpbCh1c2VyLCByZXZpZXdfcmVxdWVz\ndCwKICAgICAgICAgICAgICAgICAgICAgICJSZTogUmV2aWV3IFJlcXVlc3Q6ICVzIiAlIHJldmll\nd19yZXF1ZXN0LnN1bW1hcnksCiAgICAgICAgICAgICAgICAgICAgICByZXZpZXdfcmVxdWVzdC5l\nbWFpbF9tZXNzYWdlX2lkLAorICAgICAgICAgICAgICAgICAgICAgaGFydmVzdF9wZW9wbGVfZnJv\nbV9yZXZpZXdfcmVxdWVzdChyZXZpZXdfcmVxdWVzdCksCiAgICAgICAgICAgICAgICAgICAgICAn\ncmV2aWV3cy9kaWZmX3VwZGF0ZS50eHQnKQogICAgIHJldmlld19yZXF1ZXN0LnNhdmUoKQogCkBA\nIC0xMjIsNiArMTU4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiUmU6IFJldmlldyBS\nZXF1ZXN0OiAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlldy5yZXZpZXdfcmVx\ndWVzdC5zdW1tYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlldy5yZXZpZXdfcmVx\ndWVzdC5lbWFpbF9tZXNzYWdlX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsCiAg\nICAgICAgICAgICAgICAgICAgICAgICAgJ3Jldmlld3MvcmV2aWV3X2VtYWlsLnR4dCcsCiAgICAg\nICAgICAgICAgICAgICAgICAgICAgeydyZXZpZXcnOiByZXZpZXd9KQogICAgIHJldmlldy50aW1l\nX2VtYWlsZWQgPSBkYXRldGltZS5ub3coKQpAQCAtMTQzLDYgKzE4MCw3IEBACiAgICAgICAgICAg\nICAgICAgICAgICAgICAgIlJlOiBSZXZpZXcgUmVxdWVzdDogJXMiICUKICAgICAgICAgICAgICAg\nICAgICAgICAgICByZXZpZXcucmV2aWV3X3JlcXVlc3Quc3VtbWFyeSwKICAgICAgICAgICAgICAg\nICAgICAgICAgICByZXZpZXcuZW1haWxfbWVzc2FnZV9pZCwKKyAgICAgICAgICAgICAgICAgICAg\nICAgICBoYXJ2ZXN0X3Blb3BsZV9mcm9tX3JldmlldyhyZXZpZXcpLAogICAgICAgICAgICAgICAg\nICAgICAgICAgICdyZXZpZXdzL3JlcGx5X2VtYWlsLnR4dCcsCiAgICAgICAgICAgICAgICAgICAg\nICAgICAgeydyZXZpZXcnOiByZXZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBs\neSc6IHJlcGx5fSkK\n"}}, {"pk": "20", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 5, "dest_detail": "(working copy)", "source_revision": "651", "source_file": "\/trunk\/reviewboard\/reviews\/views.py", "dest_file": "\/trunk\/reviewboard\/reviews\/views.py", "diff": "LS0tIHJldmlld3Mvdmlld3MucHkJKHJldmlzaW9uIDY1MSkKKysrIHJldmlld3Mvdmlld3MucHkJ\nKHdvcmtpbmcgY29weSkKQEAgLTI0MywxMCArMjQzLDE2IEBACiAKIAogQGxvZ2luX3JlcXVpcmVk\nCi1kZWYgZGlmZihyZXF1ZXN0LCBvYmplY3RfaWQsIHJldmlzaW9uPU5vbmUpOgotICAgIHJldmll\nd19yZXF1ZXN0ID0gZ2V0X29iamVjdF9vcl80MDQoUmV2aWV3UmVxdWVzdCwgcGs9b2JqZWN0X2lk\nKQorZGVmIGRpZmYocmVxdWVzdCwgcmV2aWV3X3JlcXVlc3RfaWQsIHJldmlzaW9uPU5vbmUsIGlu\ndGVyZGlmZl9yZXZpc2lvbj1Ob25lKToKKyAgICByZXZpZXdfcmVxdWVzdCA9IGdldF9vYmplY3Rf\nb3JfNDA0KFJldmlld1JlcXVlc3QsIHBrPXJldmlld19yZXF1ZXN0X2lkKQogICAgIGRpZmZzZXQg\nPSBfcXVlcnlfZm9yX2RpZmYocmV2aWV3X3JlcXVlc3QsIHJldmlzaW9uKQogCisgICAgaWYgaW50\nZXJkaWZmX3JldmlzaW9uOgorICAgICAgICBpbnRlcmRpZmZzZXQgPSBfcXVlcnlfZm9yX2RpZmYo\ncmV2aWV3X3JlcXVlc3QsIGludGVyZGlmZl9yZXZpc2lvbikKKyAgICAgICAgaW50ZXJkaWZmc2V0\nX2lkID0gaW50ZXJkaWZmc2V0LmlkCisgICAgZWxzZToKKyAgICAgICAgaW50ZXJkaWZmc2V0X2lk\nID0gTm9uZQorCiAgICAgdHJ5OgogICAgICAgICByZXZpZXcgPSBSZXZpZXcub2JqZWN0cy5nZXQo\ndXNlcj1yZXF1ZXN0LnVzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy\nZXZpZXdfcmVxdWVzdD1yZXZpZXdfcmVxdWVzdCwKQEAgLTI2MSw3ICsyNjcsNyBAQAogICAgIGV4\nY2VwdCBSZXZpZXdSZXF1ZXN0RHJhZnQuRG9lc05vdEV4aXN0OgogICAgICAgICBkcmFmdCA9IE5v\nbmUKIAotICAgIHJldHVybiB2aWV3X2RpZmYocmVxdWVzdCwgZGlmZnNldC5pZCwgeworICAgIHJl\ndHVybiB2aWV3X2RpZmYocmVxdWVzdCwgZGlmZnNldC5pZCwgaW50ZXJkaWZmc2V0X2lkLCB7CiAg\nICAgICAgICdyZXZpZXcnOiByZXZpZXcsCiAgICAgICAgICdyZXZpZXdfcmVxdWVzdCc6IHJldmll\nd19yZXF1ZXN0LAogICAgICAgICAncmV2aWV3X3JlcXVlc3RfZGV0YWlscyc6IGRyYWZ0IG9yIHJl\ndmlld19yZXF1ZXN0LAo=\n"}}, {"pk": "21", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 5, "dest_detail": "(working copy)", "source_revision": "652", "source_file": "\/trunk\/reviewboard\/diffviewer\/views.py", "dest_file": "\/trunk\/reviewboard\/diffviewer\/views.py", "diff": "LS0tIGRpZmZ2aWV3ZXIvdmlld3MucHkJKHJldmlzaW9uIDY1MikKKysrIGRpZmZ2aWV3ZXIvdmll\nd3MucHkJKHdvcmtpbmcgY29weSkKQEAgLTE4LDcgKzE4LDcgQEAKICAgICBwYXNzCiAKIAotZGVm\nIGdldF9kaWZmX2ZpbGVzKGRpZmZzZXQpOgorZGVmIGdldF9kaWZmX2ZpbGVzKGRpZmZzZXQsIGlu\ndGVyZGlmZnNldD1Ob25lKToKICAgICBkZWYgZ2V0X29yaWdpbmFsX2ZpbGUoZmlsZSwgcmV2aXNp\nb24pOgogICAgICAgICAiIiJHZXQgYSBmaWxlIGVpdGhlciBmcm9tIHRoZSBjYWNoZSBvciB0aGUg\nU0NNLiAgU0NNIGV4Y2VwdGlvbnMgYXJlCiAgICAgICAgICAgIHBhc3NlZCBiYWNrIHRvIHRoZSBj\nYWxsZXIuIiIiCkBAIC0zMyw3ICszMywxNCBAQAogICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBl\nOgogICAgICAgICAgICAgcmFpc2UgVXNlclZpc2libGVFcnJvcihzdHIoZSkpCiAKLSAgICBkZWYg\nZ2V0X2NodW5rcyhmaWxlZGlmZik6CisgICAgZGVmIGdldF9wYXRjaGVkX2ZpbGUoYnVmZmVyLCBm\naWxlZGlmZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBkaWZmdXRpbHMucGF0\nY2goZmlsZWRpZmYuZGlmZiwgYnVmZmVyLCBmaWxlZGlmZi5kZXN0X2ZpbGUpCisgICAgICAgIGV4\nY2VwdCBFeGNlcHRpb24sIGU6CisgICAgICAgICAgICByYWlzZSBVc2VyVmlzaWJsZUVycm9yKHN0\ncihlKSkKKworCisgICAgZGVmIGdldF9jaHVua3MoZmlsZWRpZmYsIGludGVyZmlsZWRpZmY9Tm9u\nZSk6CiAgICAgICAgIGRlZiBkaWZmX2xpbmUobGluZW51bSwgb2xkbGluZSwgbmV3bGluZSk6CiAg\nICAgICAgICAgICBpZiBub3Qgb2xkbGluZSBvciBub3QgbmV3bGluZToKICAgICAgICAgICAgICAg\nICByZXR1cm4gW2xpbmVudW0sIG9sZGxpbmUgb3IgJycsIFtdLCBuZXdsaW5lIG9yICcnLCBbXV0K\nQEAgLTY0LDExICs3MSwxMSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb2xkID0gZ2V0\nX29yaWdpbmFsX2ZpbGUoZmlsZSwgcmV2aXNpb24pCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAg\nICAgbmV3ID0gZGlmZnV0aWxzLnBhdGNoKGZpbGVkaWZmLmRpZmYsIG9sZCwgZmlsZWRpZmYuZGVz\ndF9maWxlKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgcmFpc2Ug\nVXNlclZpc2libGVFcnJvcihzdHIoZSkpCisgICAgICAgIG5ldyA9IGdldF9wYXRjaGVkX2ZpbGUo\nb2xkLCBmaWxlZGlmZikKIAorICAgICAgICBpZiBpbnRlcmZpbGVkaWZmOgorICAgICAgICAgICAg\nb2xkLCBuZXcgPSBuZXcsIGdldF9wYXRjaGVkX2ZpbGUob2xkLCBpbnRlcmZpbGVkaWZmKQorCiAg\nICAgICAgIGEgPSAob2xkIG9yICcnKS5zcGxpdGxpbmVzKCkKICAgICAgICAgYiA9IChuZXcgb3Ig\nJycpLnNwbGl0bGluZXMoKQogICAgICAgICBhX251bV9saW5lcyA9IGxlbihhKQpAQCAtMTA2LDcg\nKzExMyw2IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGNodW5rcy5hcHBl\nbmQobmV3X2NodW5rKGxpbmVzLCBudW1saW5lcywgdGFnKSkKIAotCiAgICAgICAgIHJldHVybiBj\naHVua3MKIAogICAgIGRlZiBhZGRfbmF2aWdhdGlvbl9jdWVzKGZpbGVzKToKQEAgLTE0MCw2ICsx\nNDYsMTkgQEAKICAgICBmb3IgZmlsZWRpZmYgaW4gZGlmZnNldC5maWxlcy5hbGwoKToKICAgICAg\nICAgaWYgZmlsZWRpZmYuYmluYXJ5OgogICAgICAgICAgICAgY2h1bmtzID0gW10KKyAgICAgICAg\nZWxpZiBpbnRlcmRpZmZzZXQ6CisgICAgICAgICAgICAjIFhYWCBUaGlzIGlzIHNsb3cuIFdlIHNo\nb3VsZCBvcHRpbWl6ZSB0aGlzLgorICAgICAgICAgICAgaW50ZXJmaWxlZGlmZiA9IE5vbmUKKyAg\nICAgICAgICAgIGZvciBmaWxlZGlmZjIgaW4gaW50ZXJkaWZmc2V0LmZpbGVzLmFsbCgpOgorICAg\nICAgICAgICAgICAgIGlmIGZpbGVkaWZmMi5zb3VyY2VfZmlsZSA9PSBmaWxlZGlmZi5zb3VyY2Vf\nZmlsZToKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmaWxlZGlmZiA9IGZpbGVkaWZmMgorICAg\nICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBpZiBpbnRlcmZpbGVkaWZmOgor\nICAgICAgICAgICAgICAgIGNodW5rcyA9IGNhY2hlX21lbW9pemUoJ2RpZmYtc2lkZWJ5c2lkZS1p\nbnRlcmRpZmYtJXMtJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nIChmaWxlZGlmZi5pZCwgaW50ZXJmaWxlZGlmZi5pZCksCisgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICBsYW1iZGE6IGdldF9jaHVua3MoZmlsZWRpZmYsCisgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmaWxl\nZGlmZikpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjaHVua3MgPSBjYWNoZV9tZW1vaXpl\nKCdkaWZmLXNpZGVieXNpZGUtJXMnICUgZmlsZWRpZmYuaWQsCiAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgIGxhbWJkYTogZ2V0X2NodW5rcyhmaWxlZGlmZikpCkBAIC0xNjYsMTIg\nKzE4NSwxNyBAQAogICAgIHJldHVybiBmaWxlcwogCiAKLWRlZiB2aWV3X2RpZmYocmVxdWVzdCwg\nb2JqZWN0X2lkLCBleHRyYV9jb250ZXh0PXt9LAorZGVmIHZpZXdfZGlmZihyZXF1ZXN0LCBkaWZm\nc2V0X2lkLCBpbnRlcmRpZmZzZXRfaWQ9Tm9uZSwgZXh0cmFfY29udGV4dD17fSwKICAgICAgICAg\nICAgICAgdGVtcGxhdGVfbmFtZT0nZGlmZnZpZXdlci92aWV3X2RpZmYuaHRtbCcpOgotICAgIGRp\nZmZzZXQgPSBnZXRfb2JqZWN0X29yXzQwNChEaWZmU2V0LCBwaz1vYmplY3RfaWQpCisgICAgZGlm\nZnNldCA9IGdldF9vYmplY3Rfb3JfNDA0KERpZmZTZXQsIHBrPWRpZmZzZXRfaWQpCiAKKyAgICBp\nZiBpbnRlcmRpZmZzZXRfaWQ6CisgICAgICAgIGludGVyZGlmZnNldCA9IGdldF9vYmplY3Rfb3Jf\nNDA0KERpZmZTZXQsIHBrPWludGVyZGlmZnNldF9pZCkKKyAgICBlbHNlOgorICAgICAgICBpbnRl\ncmRpZmZzZXQgPSBOb25lCisKICAgICB0cnk6Ci0gICAgICAgIGZpbGVzID0gZ2V0X2RpZmZfZmls\nZXMoZGlmZnNldCkKKyAgICAgICAgZmlsZXMgPSBnZXRfZGlmZl9maWxlcyhkaWZmc2V0LCBpbnRl\ncmRpZmZzZXQpCiAKICAgICAgICAgaWYgcmVxdWVzdC5HRVQuZ2V0KCdleHBhbmQnLCBGYWxzZSk6\nCiAgICAgICAgICAgICBjb2xsYXBzZWFsbCA9IEZhbHNlCkBAIC0xODQsNiArMjA4LDcgQEAKIAog\nICAgICAgICBjb250ZXh0ID0gewogICAgICAgICAgICAgJ2RpZmZzZXQnOiBkaWZmc2V0LAorICAg\nICAgICAgICAgJ2ludGVyZGlmZnNldCc6IGludGVyZGlmZnNldCwKICAgICAgICAgICAgICdmaWxl\ncyc6IGZpbGVzLAogICAgICAgICAgICAgJ2NvbGxhcHNlYWxsJzogY29sbGFwc2VhbGwsCiAgICAg\nICAgIH0K\n"}}, {"pk": "22", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 5, "dest_detail": "(working copy)", "source_revision": "651", "source_file": "\/trunk\/reviewboard\/templates\/reviews\/review_request_box.html", "dest_file": "\/trunk\/reviewboard\/templates\/reviews\/review_request_box.html", "diff": "LS0tIHRlbXBsYXRlcy9yZXZpZXdzL3Jldmlld19yZXF1ZXN0X2JveC5odG1sCShyZXZpc2lvbiA2\nNTEpCisrKyB0ZW1wbGF0ZXMvcmV2aWV3cy9yZXZpZXdfcmVxdWVzdF9ib3guaHRtbAkod29ya2lu\nZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKIHslIGxvYWQgcmV2aWV3dGFncyAlfQogPGRpdiBjbGFz\ncz0ibWFpbiI+CiAgPGRpdiBjbGFzcz0iaGVhZGVyIj4KLSAgPGRpdiBpZD0ic3VtbWFyeV93cmFw\ncGVyIj48aDEgaWQ9InN1bW1hcnkiPnt7cmV2aWV3X3JlcXVlc3RfZGV0YWlscy5zdW1tYXJ5fX08\nL2gxPjwvZGl2PgorICA8ZGl2IGlkPSJzdW1tYXJ5X3dyYXBwZXIiPjxoMSBpZD0ic3VtbWFyeSI+\neyUgYmxvY2sgc3VtbWFyeV9wcmVmaXggJX17JSBlbmRibG9jayAlfXt7cmV2aWV3X3JlcXVlc3Rf\nZGV0YWlscy5zdW1tYXJ5fX08L2gxPjwvZGl2PgogICA8cCBpZD0ic3RhdHVzIj4KICAgIHt7cmV2\naWV3X3JlcXVlc3QuZ2V0X3N0YXR1c19kaXNwbGF5fX08YnIgLz4KICAgIFVwZGF0ZWQge3tyZXZp\nZXdfcmVxdWVzdF9kZXRhaWxzLmxhc3RfdXBkYXRlZHx0aW1lc2luY2V9fSBhZ28K\n"}}, {"pk": "23", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 5, "dest_detail": "(working copy)", "source_revision": "670", "source_file": "\/trunk\/reviewboard\/templates\/diffviewer\/view_diff.html", "dest_file": "\/trunk\/reviewboard\/templates\/diffviewer\/view_diff.html", "diff": "LS0tIHRlbXBsYXRlcy9kaWZmdmlld2VyL3ZpZXdfZGlmZi5odG1sCShyZXZpc2lvbiA2NzApCisr\nKyB0ZW1wbGF0ZXMvZGlmZnZpZXdlci92aWV3X2RpZmYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt\nMjAsNiArMjAsMTAgQEAKIDwvc2NyaXB0PgogeyUgZW5kYmxvY2sgJX0KIAoreyUgYmxvY2sgc3Vt\nbWFyeV9wcmVmaXggJX0KK0RpZmYgZm9yOgoreyUgZW5kYmxvY2sgJX0KKwogeyUgYmxvY2sgY29u\ndGVudCAlfQogeyUgYm94IHJldmlldy1yZXF1ZXN0ICV9CiA8dWwgaWQ9InRvcGNvbnRyb2xzIj4K\n"}}, {"pk": "24", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 5, "dest_detail": "(working copy)", "source_revision": "651", "source_file": "\/trunk\/reviewboard\/urls.py", "dest_file": "\/trunk\/reviewboard\/urls.py", "diff": "LS0tIHVybHMucHkJKHJldmlzaW9uIDY1MSkKKysrIHVybHMucHkJKHdvcmtpbmcgY29weSkKQEAg\nLTQzLDkgKzQzLDkgQEAKICAgICAgeyd0ZW1wbGF0ZV9uYW1lJzogJ3Jldmlld3MvcmV2aWV3X2Rl\ndGFpbC5odG1sJ30pLAogCiAgICAgIyBSZXZpZXcgcmVxdWVzdCBkaWZmcwotICAgIChyJ15yLyg\/\nUDxvYmplY3RfaWQ+WzAtOV0rKS9kaWZmLyQnLAorICAgIChyJ15yLyg\/UDxyZXZpZXdfcmVxdWVz\ndF9pZD5bMC05XSspL2RpZmYvJCcsCiAgICAgICdyZXZpZXdib2FyZC5yZXZpZXdzLnZpZXdzLmRp\nZmYnKSwKLSAgICAocideci8oP1A8b2JqZWN0X2lkPlswLTldKykvZGlmZi8oP1A8cmV2aXNpb24+\nWzAtOV0rKS8kJywKKyAgICAocideci8oP1A8cmV2aWV3X3JlcXVlc3RfaWQ+WzAtOV0rKS9kaWZm\nLyg\/UDxyZXZpc2lvbj5bMC05XSspLyQnLAogICAgICAncmV2aWV3Ym9hcmQucmV2aWV3cy52aWV3\ncy5kaWZmJyksCiAKICAgICAocideci8oP1A8cmV2aWV3X3JlcXVlc3RfaWQ+WzAtOV0rKS9kaWZm\nL3Jhdy8kJywKQEAgLTU2LDYgKzU2LDExIEBACiAgICAgKHInXnIvKD9QPG9iamVjdF9pZD5bMC05\nXSspL2RpZmYvKD9QPHJldmlzaW9uPlswLTldKykvZnJhZ21lbnQvKD9QPGZpbGVkaWZmX2lkPlsw\nLTldKykvJCcsCiAgICAgICdyZXZpZXdib2FyZC5yZXZpZXdzLnZpZXdzLmRpZmZfZnJhZ21lbnQn\nKSwKIAorICAgICMgUmV2aWV3IHJlcXVlc3QgaW50ZXJkaWZmcworICAgIChyJ15yLyg\/UDxyZXZp\nZXdfcmVxdWVzdF9pZD5bMC05XSspL2RpZmYvKD9QPHJldmlzaW9uPlswLTldKyktKD9QPGludGVy\nZGlmZl9yZXZpc2lvbj5bMC05XSspLyQnLAorICAgICAncmV2aWV3Ym9hcmQucmV2aWV3cy52aWV3\ncy5kaWZmJyksCisKKwogICAgICMgUmV2aWV3IHJlcXVlc3QgbW9kaWZpY2F0aW9uCiAgICAgKHIn\nXnIvWzAtOV0rL2RpZmYvdXBsb2FkLyQnLAogICAgICAncmV2aWV3Ym9hcmQuZGlmZnZpZXdlci52\naWV3cy51cGxvYWQnLAo=\n"}}, {"pk": "25", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 6, "dest_detail": "(working copy)", "source_revision": "380", "source_file": "\/trunk\/reviewboard\/htdocs\/scripts\/diffviewer.js", "dest_file": "\/trunk\/reviewboard\/htdocs\/scripts\/diffviewer.js", "diff": "LS0tIGh0ZG9jcy9zY3JpcHRzL2RpZmZ2aWV3ZXIuanMJKHJldmlzaW9uIDM4MCkKKysrIGh0ZG9j\ncy9zY3JpcHRzL2RpZmZ2aWV3ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTI2NSw3ICsyNjUsNyBA\nQAogCQkJfS5jcmVhdGVEZWxlZ2F0ZSh0aGlzKSwKIAogCQkJZmFpbHVyZTogZnVuY3Rpb24ocmVz\nKSB7Ci0JCQkJdGhpcy5zaG93RXJyb3IocmVzLnN0YXR1c1RleHQpOworCQkJCXRoaXMuc2hvd0Vy\ncm9yKHJlcy5zdGF0dXNUZXh0LCByZXMucmVzcG9uc2VUZXh0KTsKIAkJCX0uY3JlYXRlRGVsZWdh\ndGUodGhpcykKIAkJfSk7CiAJfSwKQEAgLTM0OCw3ICszNDgsNyBAQAogCQl2YXIgdGV4dCA9IHRo\naXMubmV3Q29tbWVudEZpZWxkLmRvbS52YWx1ZTsKIAogCQlpZiAodGV4dC5zdHJpcCgpID09ICIi\nKSB7Ci0JCQl0aGlzLnNob3dFcnJvcigiUGxlYXNlIGZpbGwgb3V0IHRoZSBjb21tZW50IHRleHQu\nIik7CisJCQl0aGlzLnNob3dFcnJvcigiUGxlYXNlIGZpbGwgb3V0IHRoZSBjb21tZW50IHRleHQu\nIiwgIiIpOwogCQkJcmV0dXJuOwogCQl9CiAKQEAgLTQxMSwxMCArNDExLDYgQEAKIAkJZ2V0RWwo\nImlkX3NoaXBpdCIpLmRvbS5jaGVja2VkID0gZmFsc2U7CiAJfSwKIAotCXNob3dFcnJvcjogZnVu\nY3Rpb24odGV4dCkgewotCQl0aGlzLnNob3dNZXNzYWdlKHRleHQsICJlcnJvciIpOwotCX0sCi0K\nIAlnZXRDb21tZW50QWN0aW9uVVJMOiBmdW5jdGlvbigpIHsKIAkJcmV0dXJuICJjb21tZW50cy8i\nICsgdGhpcy5jb21tZW50QmxvY2suZmlsZWRpZmZpZCArICIvIiArCiAJCSAgICAgICB0aGlzLmNv\nbW1lbnRCbG9jay5saW5lbnVtICsgIi8iOwpAQCAtNDM2LDcgKzQzMiw3IEBACiAJCQl9LmNyZWF0\nZURlbGVnYXRlKHRoaXMpLAogCiAJCQlmYWlsdXJlOiBmdW5jdGlvbihyZXMpIHsKLQkJCQl0aGlz\nLnNob3dFcnJvcihyZXMuc3RhdHVzVGV4dCk7CisJCQkJdGhpcy5zaG93RXJyb3IocmVzLnN0YXR1\nc1RleHQsIHJlcy5yZXNwb25zZVRleHQpOwogCQkJfS5jcmVhdGVEZWxlZ2F0ZSh0aGlzKQogCQl9\nKTsKIAl9LApAQCAtNDUxLDE4ICs0NDcsNDEgQEAKIAkJCX0uY3JlYXRlRGVsZWdhdGUodGhpcyks\nCiAKIAkJCWZhaWx1cmU6IGZ1bmN0aW9uKHJlcykgewotCQkJCXRoaXMuc2hvd0Vycm9yKHJlcy5z\ndGF0dXNUZXh0KTsKKwkJCQl0aGlzLnNob3dFcnJvcihyZXMuc3RhdHVzVGV4dCwgcmVzLnJlc3Bv\nbnNlVGV4dCk7CiAJCQl9LmNyZWF0ZURlbGVnYXRlKHRoaXMpCiAJCX0pOwogCX0sCiAKLQlzaG93\nTWVzc2FnZTogZnVuY3Rpb24obWVzc2FnZSwgY2xhc3NOYW1lKSB7Ci0JCXRoaXMubWVzc2FnZURp\ndi5kb20uaW5uZXJIVE1MID0gbWVzc2FnZQorCXNob3dFcnJvcjogZnVuY3Rpb24odGV4dCwgYm9k\neSkgeworCQlpZiAoYm9keSA9PSAiIikgeworCQkJdGhpcy5tZXNzYWdlRGl2LmRvbS5pbm5lckhU\nTUwgPSBtZXNzYWdlCisJCX0gZWxzZSB7CisJCQl0aGlzLm1lc3NhZ2VEaXYuZG9tLmlubmVySFRN\nTCA9ICIiOworCQkJdmFyIGlmcmFtZSA9IGdldEVsKCdlcnJvci1kbGctY29udGVudHMnKTsKKwkJ\nCXZhciBkb2MgPSBpZnJhbWUuZG9tLmNvbnRlbnREb2N1bWVudCB8fAorCQkJICAgICAgICAgIGlm\ncmFtZS5kb20uY29udGVudFdpbmRvdy5kb2N1bWVudDsKKwkJCWRvYy5vcGVuKCk7CisJCQlkb2Mu\nd3JpdGUoYm9keSk7CisJCQlkb2MuY2xvc2UoKTsKKwkJCWlmcmFtZS5zaG93KCk7CiAKLQkJaWYg\nKGNsYXNzTmFtZSkgewotCQkJdGhpcy5tZXNzYWdlRGl2LmRvbS5jbGFzc05hbWUgPSBjbGFzc05h\nbWU7CisJCQl2YXIgZWwgPSBkaC5hcHBlbmQodGhpcy5tZXNzYWdlRGl2LmRvbSwgeworCQkJCXRh\nZzogJ2EnLAorCQkJCWhyZWY6ICcjJywKKwkJCQlodG1sOiB0ZXh0CisJCQl9LCB0cnVlKTsKKwor\nCQkJZWwub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgeworCQkJCXZhciBkbGcgPSBuZXcgWUFIT08u\nZXh0LkJhc2ljRGlhbG9nKCdlcnJvci1kbGcnLCB7fSk7CisJCQkJZGxnLnNob3coZWwpOworCisJ\nCQkJZGxnLm9uKCdoaWRlJywgZnVuY3Rpb24oKSB7CisJCQkJCWlmcmFtZS5oaWRlKCk7CisJCQkJ\nfSwgdGhpcywgdHJ1ZSk7CisJCQl9LCB0aGlzLCB0cnVlKTsKIAkJfQogCisJCXRoaXMubWVzc2Fn\nZURpdi5kb20uY2xhc3NOYW1lID0gImVycm9yIjsKIAkJdGhpcy5tZXNzYWdlRGl2LnNob3coKTsK\nIAl9LAogCg==\n"}}, {"pk": "26", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 6, "dest_detail": "(working copy)", "source_revision": "376", "source_file": "\/trunk\/reviewboard\/templates\/diffviewer\/view_diff.html", "dest_file": "\/trunk\/reviewboard\/templates\/diffviewer\/view_diff.html", "diff": "LS0tIHRlbXBsYXRlcy9kaWZmdmlld2VyL3ZpZXdfZGlmZi5odG1sCShyZXZpc2lvbiAzNzYpCisr\nKyB0ZW1wbGF0ZXMvZGlmZnZpZXdlci92aWV3X2RpZmYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt\nNTUsNyArNTUsNyBAQAogPGEgbmFtZT0ie3tmaWxlLmluZGV4fX0iPjwvYT4KIHslIGluY2x1ZGUg\nImRpZmZ2aWV3ZXIvZGlmZl9maWxlX2ZyYWdtZW50Lmh0bWwiICV9CiA8c2NyaXB0IGxhbmd1YWdl\nPSJqYXZhc2NyaXB0Ij4KLSAgZ0ZpbGVBbmNob3JUb0lkWyJmaWxle3tmaWxlLmluZGV4fX0iXSA9\nIHt7ZmlsZS5maWxlZGlmZi5pZH19OworICBhZGRBbmNob3JNYXBwaW5nKCJmaWxle3tmaWxlLmlu\nZGV4fX0iLCB7e2ZpbGUuZmlsZWRpZmYuaWR9fSk7CiAgIGFkZENvbW1lbnRzKCJmaWxle3tmaWxl\nLmluZGV4fX0iLCB7JSBjb21tZW50Y291bnRzIGZpbGUuZmlsZWRpZmYgJX0pOwogPC9zY3JpcHQ+\nCiB7JSBlbmRmb3IgJX0KQEAgLTg5LDQgKzg5LDExIEBACiAgIDwvZm9ybT4KICA8L2Rpdj4KIDwv\nZGl2PgorCis8ZGl2IGlkPSJlcnJvci1kbGciIHN0eWxlPSJ2aXNpYmlsaXR5OmhpZGRlbjtwb3Np\ndGlvbjphYnNvbHV0ZTt0b3A6MHB4OyI+CisgPGRpdiBjbGFzcz0ieWRsZy1oZCI+RXJyb3Igb3V0\ncHV0PC9kaXY+CisgPGRpdiBjbGFzcz0ieWRsZy1iZCI+CisgIDxpZnJhbWUgaWQ9ImVycm9yLWRs\nZy1jb250ZW50cyI+PC9pZnJhbWU+CisgPC9kaXY+Cis8L2Rpdj4KIHslIGVuZGJsb2NrICV9Cg==\n"}}, {"pk": "27", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 7, "dest_detail": "(working copy)", "source_revision": "557", "source_file": "\/trunk\/reviewboard\/htdocs\/css\/common.css", "dest_file": "\/trunk\/reviewboard\/htdocs\/css\/common.css", "diff": "LS0tIGh0ZG9jcy9jc3MvY29tbW9uLmNzcwkocmV2aXNpb24gNTU3KQorKysgaHRkb2NzL2Nzcy9j\nb21tb24uY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNiArMjAwLDcgQEAKIAogLmJveCBoMS50\naXRsZSB7CiAgIGJhY2tncm91bmQ6ICNhMmJlZGMgdXJsKCcvaW1hZ2VzL2JveF90b3BfYmcucG5n\nJykgcmVwZWF0LXggdG9wIGxlZnQ7CisgIGJvcmRlci1ib3R0b206IDFweCAjNzI4ZWFjIHNvbGlk\nOwogICBmb250LXNpemU6IDEyMCU7CiAgIG1hcmdpbjogMDsKICAgcGFkZGluZzogNXB4IDEwcHg7\nCkBAIC0yNTUsNiArMjU2LDE4IEBACiAgIGRpc3BsYXk6IGlubGluZTsKIH0KIAorCisvKioqKioq\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq\nKioqKioqKioqKioqKgorICogTG9nIEluIEZvcm0KKyAqKioqKioqKioqKioqKioqKioqKioqKioq\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLmJv\neC5sb2dpbmZvcm0gdGFibGUgdGQgeworICBwYWRkaW5nOiA0cHg7Cit9CisKKworLyoqKioqKioq\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq\nKioqKioqKioqKioKKyAqIEFjY291bnQgcGFnZQorICoqKioqKioqKioqKioqKioqKioqKioqKioq\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAucHJl\nZnNidXR0b25zIHsKICAgcGFkZGluZzogOHB4OwogICBiYWNrZ3JvdW5kLWNvbG9yOiAjQjZDQ0Uz\nOwo=\n"}}, {"pk": "28", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 7, "dest_detail": "(working copy)", "source_revision": "550", "source_file": "\/trunk\/reviewboard\/templates\/accounts\/login.html", "dest_file": "\/trunk\/reviewboard\/templates\/accounts\/login.html", "diff": "LS0tIHRlbXBsYXRlcy9hY2NvdW50cy9sb2dpbi5odG1sCShyZXZpc2lvbiA1NTApCisrKyB0ZW1w\nbGF0ZXMvYWNjb3VudHMvbG9naW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMywzMCArMyw0OCBA\nQAogeyUgYmxvY2sgdGl0bGUgJX1Mb2cgaW57JSBlbmRibG9jayAlfQogCiB7JSBibG9jayBjb250\nZW50ICV9Ci08ZGl2IGNsYXNzPSJzZWN0aW9uIj4KLSA8aDE+TG9nIGluPC9oMT4KLSA8ZGl2IGNs\nYXNzPSJib2R5Ij4KLSAgeyUgaWYgZXJyb3IgJX0KLSAgeyUgIGVycm9yYm94ICV9Ci0gIHt7IGVy\ncm9yIH19Ci0gIHslICBlbmRlcnJvcmJveCAlfQotICB7JSBlbmRpZiAlfQotICA8Zm9ybSBtZXRo\nb2Q9InBvc3QiIGFjdGlvbj0iLiI+Ci0gICA8dGFibGUgaWQ9ImxvZ2luX2Zvcm0iPgotICAgIDx0\ncj4KLSAgICAgPHRkIGNsYXNzPSJsYWJlbCI+PGxhYmVsIGZvcj0iaWRfdXNlcm5hbWUiPlVzZXJu\nYW1lOjwvbGFiZWw+PC90ZD4KLSAgICAgPHRkIGNsYXNzPSJmaWVsZCI+PGlucHV0IHR5cGU9InRl\neHQiIG5hbWU9InVzZXJuYW1lIiBpZD0iaWRfdXNlcm5hbWUiIC8+PC90ZD4KLSAgICA8L3RyPgot\nICAgIDx0cj4KLSAgICAgPHRkIGNsYXNzPSJsYWJlbCI+PGxhYmVsIGZvcj0iaWRfcGFzc3dvcmQi\nPlBhc3N3b3JkOjwvbGFiZWw+PC90ZD4KLSAgICAgPHRkIGNsYXNzPSJmaWVsZCI+PGlucHV0IHR5\ncGU9InBhc3N3b3JkIiBuYW1lPSJwYXNzd29yZCIgaWQ9ImlkX3Bhc3N3b3JkIiAvPjwvdGQ+Ci0g\nICAgPC90cj4KLSAgICA8dHI+Ci0gICAgIDx0ZD4mbmJzcDs8L3RkPgotICAgICA8dGQgY2xhc3M9\nImZpZWxkIj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iTG9nIGluIiAvPjwvdGQ+Ci0gICAg\nPC90cj4KLSAgIDwvdGFibGU+Ci0gIDwvZm9ybT4KK3slIGJveCBpbXBvcnRhbnQgJX0KK3slIGlm\nIEJVSUxUSU5fQVVUSCAlfQorIDxoMT5OZXcgdXNlcj88L2gxPgorIDxwPgorICBJZiB5b3UgZG9u\nJ3QgeWV0IGhhdmUgYW4gYWNjb3VudCwgeW91J2xsIG5lZWQgdG8KKyAgPGEgaHJlZj0iL2FjY291\nbnQvcmVnaXN0ZXIvIj5yZWdpc3RlcjwvYT4gb25lLiBJdCB3aWxsIG9ubHkgdGFrZSBhCisgIG1p\nbnV0ZS4KKyA8L3A+Cit7JSBlbHNlICV9CisgPGgxPkxvZyBpbiB3aXRoIHlvdXIgc3RhbmRhcmQg\ndXNlcm5hbWUgYW5kIHBhc3N3b3JkPC9oMT4KKyA8cD4KKyAgVGhlcmUncyBubyBuZWVkIHRvIHJl\nZ2lzdGVyIGEgbmV3IGFjY291bnQuIFlvdXIgc3RhbmRhcmQgdXNlcm5hbWUgYW5kCisgIHBhc3N3\nb3JkIHNob3VsZCB3b3JrIGZpbmUuCisgPC9wPgoreyUgZW5kaWYgJX0KK3slIGVuZGJveCAlfQor\nCit7JSBib3ggbG9naW5mb3JtICV9Cis8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iLiI+Cisg\nPGgxIGNsYXNzPSJ0aXRsZSI+TG9nIEluPC9oMT4KKyA8ZGl2IGNsYXNzPSJtYWluIj4KKyB7JSBp\nZiBlcnJvciAlfQorIHslICBlcnJvcmJveCAlfQorIHt7IGVycm9yIH19CisgeyUgIGVuZGVycm9y\nYm94ICV9CisgeyUgZW5kaWYgJX0KKyA8dGFibGU+CisgIDx0cj4KKyAgIDx0ZCBjbGFzcz0ibGFi\nZWwiPjxsYWJlbCBmb3I9ImlkX3VzZXJuYW1lIj5Vc2VybmFtZTo8L2xhYmVsPjwvdGQ+CisgICA8\ndGQgY2xhc3M9ImZpZWxkIj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idXNlcm5hbWUiIGlkPSJp\nZF91c2VybmFtZSIgLz48L3RkPgorICA8L3RyPgorICA8dHI+CisgICA8dGQgY2xhc3M9ImxhYmVs\nIj48bGFiZWwgZm9yPSJpZF9wYXNzd29yZCI+UGFzc3dvcmQ6PC9sYWJlbD48L3RkPgorICAgPHRk\nIGNsYXNzPSJmaWVsZCI+PGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwYXNzd29yZCIgaWQ9\nImlkX3Bhc3N3b3JkIiAvPjwvdGQ+CisgIDwvdHI+CisgIDx0cj4KKyAgIDx0ZD4mbmJzcDs8L3Rk\nPgorICAgPHRkIGNsYXNzPSJmaWVsZCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkxvZyBp\nbiIgLz48L3RkPgorICA8L3RyPgorIDwvdGFibGU+CiAgPC9kaXY+Ci08L2Rpdj4KKzwvZm9ybT4K\nK3slIGVuZGJveCAlfQorCiB7JSBlbmRibG9jayAlfQo=\n"}}, {"pk": "29", "model": "diffviewer.filediff", "fields": {"binary": false, "diffset": 7, "dest_detail": "(working copy)", "source_revision": "550", "source_file": "\/trunk\/reviewboard\/urls.py", "dest_file": "\/trunk\/reviewboard\/urls.py", "diff": "LS0tIHVybHMucHkJKHJldmlzaW9uIDU1MCkKKysrIHVybHMucHkJKHdvcmtpbmcgY29weSkKQEAg\nLTExNCw3ICsxMTQsOCBAQAogCiAgICAgIyBBdXRoZW50aWNhdGlvbiBhbmQgYWNjb3VudHMKICAg\nICAocideYWNjb3VudC9sb2dpbi8kJywgJ2RqYmxldHMuYXV0aC52aWV3cy5sb2dpbicsCi0gICAg\nIHsnbmV4dF9wYWdlJzogJy9kYXNoYm9hcmQvJ30pLAorICAgICB7J25leHRfcGFnZSc6ICcvZGFz\naGJvYXJkLycsCisgICAgICAnZXh0cmFfY29udGV4dCc6IHsnQlVJTFRJTl9BVVRIJzogc2V0dGlu\nZ3MuQlVJTFRJTl9BVVRIfX0pLAogICAgIChyJ15hY2NvdW50L2xvZ291dC8kJywgJ2RqYW5nby5j\nb250cmliLmF1dGgudmlld3MubG9nb3V0JywKICAgICAgeyduZXh0X3BhZ2UnOiBzZXR0aW5ncy5M\nT0dJTl9VUkx9KSwKICAgICAocideYWNjb3VudC9wcmVmZXJlbmNlcy8kJywgJ3Jldmlld2JvYXJk\nLmFjY291bnRzLnZpZXdzLnVzZXJfcHJlZmVyZW5jZXMnLCksCkBAIC0xMjUsNiArMTI2LDExIEBA\nCiAgICAgICAgIChyJ15hY2NvdW50L3JlZ2lzdGVyLyQnLCAnZGpibGV0cy5hdXRoLnZpZXdzLnJl\nZ2lzdGVyJywKICAgICAgICAgIHsnbmV4dF9wYWdlJzogJy9kYXNoYm9hcmQvJ30pLAogICAgICkK\nK2Vsc2U6CisgICAgdXJscGF0dGVybnMgKz0gcGF0dGVybnMoJycsCisgICAgICAgIChyJ15hY2Nv\ndW50L3JlZ2lzdGVyLyQnLAorICAgICAgICAgJ2RqYW5nby52aWV3cy5nZW5lcmljLnNpbXBsZS5y\nZWRpcmVjdF90bycsCisgICAgICAgICB7J3VybCc6ICcvYWNjb3VudC9sb2dpbi8nfSkpCiAKICMg\nQWRkIHN0YXRpYyBtZWRpYSBpZiBydW5uaW5nIGluIERFQlVHIG1vZGUKIGlmIHNldHRpbmdzLkRF\nQlVHOgo=\n"}}]
Index: reviewboard/reviews/forms.py
===============================================================
--- reviewboard/reviews/forms.py	(revision 1360)
+++ reviewboard/reviews/forms.py	(working copy)
@@ -1,6 +1,7 @@
 import re
 
 from django import newforms as forms
+from django.utils.translation import ugettext as _
 from PIL import Image
 
 from reviewboard.diffviewer.forms import UploadDiffForm, EmptyDiffError
@@ -19,10 +20,13 @@ class OwnershipError(ValueError):
 
 
 class NewReviewRequestForm(forms.Form):
-    basedir = forms.CharField(required=False)
-    diff_path = forms.CharField(widget=forms.FileInput, required=True)
-    repository = forms.ChoiceField(required=True)
-    changenum = forms.IntegerField(required=False)
+    basedir = forms.CharField(label=_("Base Diff Path"), required=False)
+    diff_path = forms.CharField(label=_("Diff"),
+                                widget=forms.FileInput, required=True)
+    parent_diff_path = forms.CharField(label=_("Parent Diff (optional)"),
+                                       widget=forms.FileInput, required=False)
+    repository = forms.ChoiceField(label=_("Repository"), required=True)
+    changenum = forms.IntegerField(label=_("Change Number"), required=False)
 
     def __init__(self, *args, **kwargs):
         forms.Form.__init__(self, *args, **kwargs)
@@ -36,7 +40,7 @@ class NewReviewRequestForm(forms.Form):
         names = [x for x in map(str.strip, re.split(',\s*', data)) if x]
         return set([constructor(name) for name in names])
 
-    def create(self, user, file):
+    def create(self, user, diff_file, parent_diff_file):
         repository = Repository.objects.get(pk=self.cleaned_data['repository'])
         changenum = self.cleaned_data['changenum'] or None
 
@@ -77,14 +81,19 @@ class NewReviewRequestForm(forms.Form):
         },
         files={
             'path': self.cleaned_data['diff_path'],
+            'parent_diff_path': self.cleaned_data['parent_diff_path'],
         })
         diff_form.full_clean()
 
         try:
-            diff_form.create(file, review_request.diffset_history)
+            diff_form.create(diff_file, parent_diff_file,
+                             review_request.diffset_history)
             if 'path' in diff_form.errors:
                 review_request.delete()
                 self.errors['diff_path'] = diff_form.errors['path']
+            elif 'base_diff_path' in diff_form.errors:
+                review_request.delete()
+                self.errors['base_diff_path'] = diff_form.errors['base_diff_path']
         except EmptyDiffError:
             review_request.delete()
             self.errors['diff_path'] = forms.util.ErrorList([
Index: reviewboard/reviews/views.py
===============================================================
--- reviewboard/reviews/views.py	(revision 1360)
+++ reviewboard/reviews/views.py	(working copy)
@@ -52,8 +52,10 @@ def new_review_request(request,
 
         if form.is_valid():
             try:
-                review_request = form.create(request.user,
-                                             request.FILES['diff_path'])
+                review_request = form.create(
+                    user=request.user,
+                    diff_file=request.FILES['diff_path'],
+                    parent_diff_file=request.FILES.get('parent_diff_path'))
                 return HttpResponseRedirect(review_request.get_absolute_url())
             except:
                 # XXX - OwnershipError or ChangeSetError?
Index: reviewboard/settings.py
===============================================================
--- reviewboard/settings.py	(revision 1360)
+++ reviewboard/settings.py	(working copy)
@@ -77,6 +77,7 @@ INSTALLED_APPS = (
     'django.contrib.markup',
     'django.contrib.sites',
     'django.contrib.sessions',
+    'django_evolution',
     'djblets.datagrid',
     'djblets.util',
     'djblets.webapi',
Index: reviewboard/templates/reviews/new_review_request.html
===============================================================
--- reviewboard/templates/reviews/new_review_request.html	(revision 1360)
+++ reviewboard/templates/reviews/new_review_request.html	(working copy)
@@ -52,17 +52,17 @@ YAHOO.util.Event.on(window, "load", function(e) {
     </td>{% endspaceless %}
    </tr>
    <tr id="row_changenum">
-    <td><label for="id_changenum">{% trans "Change Number" %}:</label></td>
+    <td><label for="id_changenum">{{form.changenum.label}}:</label></td>
     <td>{{form.changenum}}</td>
     <td>{{form.changenum.errors}}</td>
    </tr>
    <tr id="row_basedir">
-    <td><label for="id_basedir">{% trans "Base Diff Path" %}:</label></td>
+    <td><label for="id_basedir">{{form.basedir.label}}:</label></td>
     <td>{{form.basedir}}</td>
     <td>{{form.basedir.errors}}</td>
    </tr>
    <tr id="row_diff_path">
-    <td><label for="id_diff_path">{% trans "Diff" %}:</label></td>
+    <td><label for="id_diff_path">{{form.diff_path.label}}:</label></td>
     <td>{{form.diff_path}}</td>
     <td>{{form.diff_path.errors}}</td>
    </tr>
