Consider the following example:
tf_vectorizer = CountVectorizer(max_df=1, min_df=0,
max_features=None,
stop_words=None)
all_docs = ['ETH:0x0000 00:17:A4:77:9C:04 09:00:2B:00:00:05 0 PortA Unknown 755 0 45300 ETH FirstHourDay_21 LastHourDay_23 duration_6911 ThreatScore_nan ThreatCategory_nan False Anomaly_False',
'ETH:0x0000 00:17:A4:77:9C:04 09:00:2B:00:00:05 2 PortC Unknown 774 0 46440 ETH FirstHourDay_21 LastHourDay_23 duration_6911 ThreatScore_nan ThreatCategory_nan False Anomaly_False',
'ETH:0x0000 00:17:A4:77:9C:0A 09:00:2B:00:00:05 0 PortA Unknown 752 0 45120 ETH FirstHourDay_21 LastHourDay_23 duration_6913 ThreatScore_nan ThreatCategory_nan False Anomaly_False',
'ICMP 10.6.224.1 71.6.165.200 0 PortA 192 IP-ICMP 1 1 70 ICMP FirstHourDay_22 LastHourDay_22 duration_0 ThreatScore_122,127 ThreatCategory_21,23 True Anomaly_True',
'ICMP 10.6.224.1 71.6.165.200 2 PortC 192 IP-ICMP 1 1 70 ICMP FirstHourDay_22 LastHourDay_22 duration_0 ThreatScore_122,127 ThreatCategory_21,23 True Anomaly_True',
'ICMP 10.6.224.1 185.93.185.239 0 PortA 192 IP-ICMP 1 1 70 ICMP FirstHourDay_22 LastHourDay_22 duration_0 ThreatScore_127 ThreatCategory_23 True Anomaly_True']
tf_v = tf_vectorizer.fit(all_docs)
The obtained vocabulary is:
{'0a': 0,
'185': 1,
'239': 2,
'45120': 3,
'45300': 4,
'46440': 5,
'752': 6,
'755': 7,
'774': 8,
'93': 9,
'duration_6913': 10,
'threatcategory_23': 11,
'threatscore_127': 12}
Some words are missing from the vocabulary such as ETH, FirstHourDay_22, Anomaly_True.
Why is this? how can I have a full vocabulary?
EDIT:
The error is probably due to the token_pattern value in CountVectorizer
EDIT:
I suggest to riconsider the problem with the following variable:
all_docs=['ETH0x0000 0017A4779C04 09002B000005 0 PortA Unknown 755 0 45300 FirstHourDay21 LastHourDay23 duration6911 ThreatScorenan ThreatCategorynan False AnomalyFalse',
'ETH0x0000 0017A4779C04 09002B000005 2 PortC Unknown 774 0 46440 FirstHourDay21 LastHourDay23 duration6911 ThreatScorenan ThreatCategorynan False AnomalyFalse',
'ETH0x0000 0017A4779C0A 09002B000005 0 PortA Unknown 752 0 45120 FirstHourDay21 LastHourDay23 duration6913 ThreatScorenan ThreatCategorynan False AnomalyFalse',
'ICMP 10.6.224.1 71.6.165.200 0 PortA 192 IP-ICMP 1 1 70 FirstHourDay22 LastHourDay22 duration0 ThreatScore122,127 ThreatCategory21,23 True AnomalyTrue',
'ICMP 10.6.224.1 71.6.165.200 2 PortC 192 IP-ICMP 1 1 70 FirstHourDay22 LastHourDay22 duration0 ThreatScore122,127 ThreatCategory21,23 True AnomalyTrue',
'ICMP 10.6.224.1 185.93.185.239 0 PortA 192 IP-ICMP 1 1 70 FirstHourDay22 LastHourDay22 duration0 ThreatScore127 ThreatCategory23 True AnomalyTrue']
Related
[(['Piano'], 'Beethoven - opus22 4.mid'), (['Piano'], 'Borodin - ps7.mid'), (['Piano'], 'Chopin - op18.mid'), ([None, 'Guitar', 'StringInstrument', 'Acoustic Bass'], 'Cyndi Lauper - True Colors.mid'), (['Piano', 'Fretless Bass', 'StringInstrument', None], 'Frank Mills - Musicbox Dancer.mid'), (['Piano', 'Acoustic Bass', None, 'Baritone Saxophone'], 'George Benson - On Broadway.mid'), (['Piano'], 'Grieg - Voeglein.mid'), (['Piano'], 'Mozart - 333 3.mid'), ([None, 'Pan Flute', 'Piano', 'Piccolo', 'Violin'], 'The Corrs - Dreams.mid'), (['Piano', None, 'Fretless Bass'], 'ABBA - Money Money Money.mid')]
The above-given list is a list of songs with the given instruments used within those songs. I want to make a boolean panda dataframe given these songs with the nonetype instrument removed. The below-given image as an example:
Given dataframe
I tried to make a dataframe given every single instrument and merge these, however, this did not result in the given dataframe.
Try:
import pandas as pd
lst = [
(["Piano"], "Beethoven - opus22 4.mid"),
(["Piano"], "Borodin - ps7.mid"),
(["Piano"], "Chopin - op18.mid"),
(
[None, "Guitar", "StringInstrument", "Acoustic Bass"],
"Cyndi Lauper - True Colors.mid",
),
(
["Piano", "Fretless Bass", "StringInstrument", None],
"Frank Mills - Musicbox Dancer.mid",
),
(
["Piano", "Acoustic Bass", None, "Baritone Saxophone"],
"George Benson - On Broadway.mid",
),
(["Piano"], "Grieg - Voeglein.mid"),
(["Piano"], "Mozart - 333 3.mid"),
(
[None, "Pan Flute", "Piano", "Piccolo", "Violin"],
"The Corrs - Dreams.mid",
),
(["Piano", None, "Fretless Bass"], "ABBA - Money Money Money.mid"),
]
all_data = []
for instruments, title in lst:
d = {"title": title}
for i in instruments:
if not i is None:
d[i] = 1
all_data.append(d)
df = pd.DataFrame(all_data).fillna(0).set_index("title").astype(int)
df.index.name = None
print(df)
Prints:
Piano Guitar StringInstrument Acoustic Bass Fretless Bass Baritone Saxophone Pan Flute Piccolo Violin
Beethoven - opus22 4.mid 1 0 0 0 0 0 0 0 0
Borodin - ps7.mid 1 0 0 0 0 0 0 0 0
Chopin - op18.mid 1 0 0 0 0 0 0 0 0
Cyndi Lauper - True Colors.mid 0 1 1 1 0 0 0 0 0
Frank Mills - Musicbox Dancer.mid 1 0 1 0 1 0 0 0 0
George Benson - On Broadway.mid 1 0 0 1 0 1 0 0 0
Grieg - Voeglein.mid 1 0 0 0 0 0 0 0 0
Mozart - 333 3.mid 1 0 0 0 0 0 0 0 0
The Corrs - Dreams.mid 1 0 0 0 0 0 1 1 1
ABBA - Money Money Money.mid 1 0 0 0 1 0 0 0 0
what is the appropriate regex to match any number greater than "750 active" in the below text at the last line ?
=============================================================================
c0000000a7470b30 Y--P--- 4207362 weblogic - c000000098078f98 0 1 1832876 0
c0000000a74853f0 Y--P--- 4376431 krizzsa LL2CE414 c0000000a19479b8 0 8 70173 170
c0000000b3a1f2c8 Y--P--- 3996541 weblogic - c0000000acd54f90 0 1 64112 0
c0000000b3a22418 Y--P--- 4371951 tinpatel tK c000000098385b70 0 1 62 0
c0000000b3a286b8 B--PR-- 4385816 ayaw SL5CG752 c00000001b0bdde0 0 5 14452 701
c0000000b3a2afd0 Y--P--- 4383560 sognenov t3 c000000099afe900 0 1 100 0
c0000000b3a2b808 Y--P--- 4368082 wenpli 66 c00000009e6f8260 0 1 461 0
c0000000b3a2c878 Y--P--- 4228342 sarbrar tc c0000000a62da668 0 1 0 0
c0000000b3a2f9c8 Y--P--- 4384060 weblogic - c0000000a2deb910 0 1 0 0
c0000000b3a35430 Y--P--- 4383243 nakahmed t1 c00000009e0b9ce8 0 1 17 0
c0000000b3a38580 Y--P--- 3937012 mvvinay 76 c0000000a162a888 0 1 0 0
c0000000b3a3d7b0 Y--P--- 616042 neminhas LD2UA442 c0000000aea25ca8 0 2 0 0
c0000000b3a43218 Y--P--- 4383236 nakahmed t1 c0000000981b4570 0 1 37 22
c0000000b3a473d8 Y--P--- 4382647 viwang 2UA40922 c0000000a268a2d0 0 7 75275 4856
412 active, 2176 total, 441 maximum concurrent
================================================================
in the last line if the active connections to a DB goes more than 750 we need to match it and do further processing.So can someone please help with regex ?
Please note that there is a space in the beginning of the last line.
If it's Perl, there's no need to use matching for everything.
if (/ ([0-9]+) active/ && $1 > 750) {
print "Matching!\n";
If you need a single regex, it's
/^\ (?: 7 (?: 5 [1-9]
| [6-9][0-9])
| [89] [0-9]{2}
| [1-9][0-9]{3,})\ active/x
or shortly
/^ (?:7(?:5[1-9]|[6-9][0-9])|[89][0-9]{2}|[1-9][0-9]{3,}) active/
It may not be the best idea, yet if we might have to, probably our expression would be:
^\h*(7[5-9]\d|[89]\d\d|[1-9]\d{3,})\h+active\b
((7[5-9]\d|[89]\d\d|[1-9]\d{3,})\sactive)
((7[5-9]\d|[89]\d\d|[1-9]\d{3,})\s+active)
((7[5-9]\d|[89]\d\d|[1-9]\d{3,}) active)
based on bobble-bubble's advice,
DEMO
or something similar to:
([7][5-9][0-9]|[8-9][0-9][0-9]|[1-9][0-9]{3,}) active
(([7][5-9][0-9]|[8-9][0-9][0-9]|[1-9][0-9]{3,}) active)
if we might want to capture things, separately.
So far this is my code:
from django.template import (Context, Template) # v1.11
from weasyprint import HTML # v0.42
import codecs
template = Template(codecs.open("/path/to/my/template.html", mode="r", encoding="utf-8").read())
context = Context({})
html = HTML(string=template.render(context))
pdf_file = html.write_pdf()
#with open("/path/to/my/file.pdf", "wb") as f:
# f.write(self.pdf_file)
Errorstack:
[17/Jan/2019 08:14:13] INFO [handle_correspondence:54] 'utf8' codec can't
decode byte 0xe2 in position 10: invalid continuation byte. You passed in
'%PDF-1.3\n%\xe2\xe3\xcf\xd3\n1 0 obj\n<</Author <> /Creator (cairo 1.14.6
(http://cairographics.org))\n /Keywords <> /Producer (WeasyPrint 0.42.3
\\(http://weasyprint.org/\\))>>\nendobj\n2 0 obj\n<</Pages 3 0 R /Type
/Catalog>>\nendobj\n3 0 obj\n<</Count 1 /Kids [4 0 R] /Type
/Pages>>\nendobj\n4 0 obj\n<</BleedBox [0 0 595 841] /Contents 5 0 R
/Group\n <</CS /DeviceRGB /I true /S /Transparency /Type /Group>>
MediaBox\n [0 0 595 841] /Parent 3 0 R /Resources 6 0 R /TrimBox [0 0 595
841]\n /Type /Page>>\nendobj\n5 0 obj\n<</Filter /FlateDecode /Length 15
0 R>>\nstream\nx\x9c+\xe4*T\xd0\x0fH,)I-\xcaSH.V\xd0/0U(N\xceS\xd0O4PH/\xe62P0P0\xb54U\xb001T(JUH\xe3\n\x04B\x00\x8bi\r\x89\nendstream\nendobj\n6 0
obj\n<</ExtGState <</a0 <</CA 1 /ca 1>>>> /Pattern <</p5 7 0
R>>>>\nendobj\n7 0 obj\n<</BBox [0 1123 794 2246] /Length 8 0 R /Matrix
[0.75 0 0 0.75 0 -843.5]\n /PaintType 1 /PatternType 1 /Resources
<</XObject <</x7 9 0 R>>>>\n /TilingType 1 /XStep 1588 /YStep
2246>>\nstream\n /x7 Do\n \n\nendstream\nendobj\n8 0 obj\n10\nendobj\n9 0
obj\n<</BBox [0 1123 794 2246] /Filter /FlateDecode /Length 10 0 R
/Resources\n 11 0 R /Subtype /Form /Type /XObject>>\nstream\nx\x9c+\xe4\nT(\xe42P0221S0\xb74\xd63\xb3\xb4T\xd05442\xd235R(JU\x08W\xc8\xe3*\xe42T0\x00B\x10\t\x942VH\xce\xe5\xd2O4PH/V\xd0\xaf04Tp\xc9\xe7\n\x04B\x00`\xf0\x10\x11\nendstream\nendobj\n10 0 obj\n77\nendobj\n11 0 obj\n<</ExtGState
<</a0 <</CA 1 /ca 1>>>> /XObject <</x11 12 0 R>>>>\nendobj\n12 0
obj\n<</BBox [0 1123 0 1123] /Filter /FlateDecode /Length 13 0 R
/Resources\n 14 0 R /Subtype /Form /Type /XObject>>\nstream\nx\x9c+\xe4\n
xe4\x02\x00\x02\x92\x00\xd7\nendstream\nendobj\n13 0 obj\n12\nendobj\n14 0
obj\n<<>>\nendobj\n15 0 obj\n58\nendobj\nxref\n0 16\n0000000000 65535
f\r\n0000000015 00000 n\r\n0000000168 00000 n\r\n0000000215 00000
n\r\n0000000270 00000 n\r\n0000000489 00000 n\r\n0000000620 00000
n\r\n0000000697 00000 n\r\n0000000923 00000 n\r\n0000000941 00000
n\r\n0000001165 00000 n\r\n0000001184 00000 n\r\n0000001264 00000
n\r\n0000001422 00000 n\r\n0000001441 00000 n\r\n0000001462 00000
n\r\ntrailer\n\n<</Info 1 0 R /Root 2 0 R /Size 16>>\nstartxref\n1481
n%%EOF\n' (<type 'str'>)
Actually it works via web request (returning the PDF as response) and via shell (manually writting the code). The code is tested and never gaves me problems. The files are saved with correct encoding, and setting the encoding kwarg in HTML doesn't help; also, the mode value of the template is correct, because I've seen other questions whose problem could be that.
However, I was adding a management command to use it periodically (for bigger PDFs I cannot do it via web request because the server's timeout could activate before finishing), and when I try to call it, I only get a UnicodeDecodeError saying 'utf8' codec can't decode byte 0xe2 in position 10: invalid continuation byte.
The PDF (at least from what I see) renders initially with this characters:
%PDF-1.3\n%\xe2\xe3\xcf\xd3\n1 0
which translates into this:
%PDF-1.3
%âãÏÓ
1 0 obj
So the problem is all about the character â. But it's a trap!
Instead, the problem is this line of code:
pdf_file = html.write_pdf()
Changing it to:
html.write_pdf()
Just works as expected!
So my question is: what type of reason could exists for Python to throw an UnicodeDecodeError when trying to assign a variable to a string? I've digged into weasyprint's code in my virtualenv, but I didn't see conversions out there.
So I don't know why, but now suddenly it works. I literally didn't modify anything: I just run the command again and it works.
I'm not marking the question as answered, as maybe in the future someone could have the same problem as me can try to post a correct one.
So disturbing.
EDIT
So it looks like I'm a very intelligent person who tries to set up the value of self.pdf_file, which is a models.FileField, to the content of the created PDF instead of the file itself.
I'm new to bash and want to improve. I need to learn reading specific text from a file or from output of a command.For example I want to sum of the total ethernet interrupt numbers of each core of the computer from /proc/interrupts file.The content of the file is:
CPU0 CPU1 CPU2 CPU3
0: 142 0 0 0 IO-APIC-edge timer
1: 1 0 1 0 IO-APIC-edge i8042
4: 694 18 635 19 IO-APIC-edge serial
7: 0 0 0 0 IO-APIC-edge parport0
9: 0 0 0 0 IO-APIC-fasteoi acpi
12: 1 1 0 2 IO-APIC-edge i8042
14: 0 0 0 0 IO-APIC-edge ide0
19: 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb3
23: 0 0 0 0 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb2
46: 347470 119806 340499 108227 PCI-MSI-edge ahci
47: 33568 45958 46028 49191 PCI-MSI-edge eth0-rx-0
48: 0 0 0 0 PCI-MSI-edge eth0-tx-0
49: 1 0 1 0 PCI-MSI-edge eth0
50: 28217 42237 65203 39086 PCI-MSI-edge eth1-rx-0
51: 0 0 0 0 PCI-MSI-edge eth1-tx-0
52: 0 1 0 1 PCI-MSI-edge eth1
59: 114991 338765 77952 134850 PCI-MSI-edge eth4-rx-0
60: 429029 315813 710091 26714 PCI-MSI-edge eth4-tx-0
61: 5 2 1 5 PCI-MSI-edge eth4
62: 1647083 208840 1164288 933967 PCI-MSI-edge eth5-rx-0
63: 673787 1542662 195326 1329903 PCI-MSI-edge eth5-tx-0
64: 5 6 7 4 PCI-MSI-edge eth5
I need to read all of the numbers of interrupts with "eth" keyword and then find the sum of them for each CPU core(whateve the CPU core name is). For example for CPU0:33568+0+1+28217...
What is suitable for this? Must I use awk or sed for regex and how?
You could use awk for this, there is no need for grep or any other tool since awk can do the search itself.
UPDATE:
Based on the possibility of varying number of CPU columns (see first comment below), this will work:
NR==1 {
core_count = NF
print "core count: ", core_count
next
}
/eth/ {
for (i = 2; i <= 2+core_count; i++)
totals[i-2] += $i
}
END {
print "Totals"
for (i = 0; i < core_count; i++)
printf("CPU%d: %d\n", i, totals[i])
}
gives output:
core count: 4
Totals
CPU0: 2926686
CPU1: 2494284
CPU2: 2258897
CPU3: 2513721
Notes:
If the first line only contains CPU headers, then using NF as shown at the start of the script will work. If other data might be present then core_count = gsub(/CPU/, "CPU") could be used. Also, this script depends on consecutive CPU columns.
You can filter out the eth lines using grep, and then sum using awk.
e.g. for CPUs 1 and 2:
grep eth report | awk '{ CPU0 += $2; CPU1 += $3} END { print CPU0; print CPU1} '
Note that you can filter within awk, rather than use grep for this.
I would perhaps be tempted to do this in Perl however, and create a hash of sum per CPU. It would depend on how extensible I want to make this.
I'm having trouble with saving/updating a value to my database table after the Httpresponse is created and am looking for any tips, help, pointers, etc. I am passing a pdf object from my database to the browser, which works perfectly when the updating code is not in the model. With the code as below, I get a Django Unicode Decode Error. The exception states : "'utf8' codec can't decode bytes in position 564-565: invalid data." The odd thing is that this error does not occur when I am not trying to update the pdf_printed field (meaning no decoding error occurs normally, I get the pdf object to display without this problem), so wondering if those two methods are somehow clashing... seems like the obj.save may be the issue. Again, thanks for any insight to this issue!
I should also add that the update code manages to update the field; it just doesn't display the pdf object.
from django.contrib import admin
from django.contrib.auth.models import User
from django.pdf.models import ABC
from django.http import HttpResponse
class ABCAdmin(admin.ModelAdmin):
actions = ['print_selected_pdf']
def get_user(self):
return '%s'%(self.user.username)
def create_pdf(self, queryset):
response = HttpResponse(mimetype="application/pdf")
response['Content-Disposition'] = 'attachment; filename=form.pdf'
for obj in queryset:
response.write(obj.form)
#update the pdf_printed to true
obj.pdf_printed=True
obj.save()
return response
def print_selected_pdf(self, request, queryset):
# prints the pdfs for those that are selected,
# regardless if the pdf_printed field is true or false
qs = queryset.filter(pdf_printed__exact=0)
return self.create_pdf(qs)
print_selected_pdf.short_description = "Print PDF"
admin.site.register(ABC, ABCAdmin)
Traceback:
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/admin/pdf/abc/
Django Version: 1.1
Python Version: 2.5.2
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'djangostuff.pdf']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware')
Traceback:
File "/usr/lib/python2.5/site-packages/django/core/handlers/base.py" in get_response
92. response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.5/site-packages/django/contrib/admin/options.py" in wrapper
226. return self.admin_site.admin_view(view)(*args, **kwargs)
File "/usr/lib/python2.5/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
44. response = view_func(request, *args, **kwargs)
File "/usr/lib/python2.5/site-packages/django/contrib/admin/sites.py" in inner
186. return view(request, *args, **kwargs)
File "/usr/lib/python2.5/site-packages/django/contrib/admin/options.py" in changelist_view
912. response = self.response_action(request, queryset=cl.get_query_set())
File "/usr/lib/python2.5/site-packages/django/contrib/admin/options.py" in response_action
694. response = func(self, request, queryset.filter(pk__in=selected))
File "/home/user/django/djangostuff/../djangostuff/pdf/admin.py" in print_selected_pdf
50. return self.create_pdf(qs)
File "/home/user/django/djangostuff/../djangostuff/pdf/admin.py" in create_pdf
43. obj.save()
File "/usr/lib/python2.5/site-packages/django/db/models/base.py" in save
410. self.save_base(force_insert=force_insert, force_update=force_update)
File "/usr/lib/python2.5/site-packages/django/db/models/base.py" in save_base
474. rows = manager.filter(pk=pk_val)._update(values)
File "/usr/lib/python2.5/site-packages/django/db/models/query.py" in _update
444. return query.execute_sql(None)
File "/usr/lib/python2.5/site-packages/django/db/models/sql/subqueries.py" in execute_sql
120. cursor = super(UpdateQuery, self).execute_sql(result_type)
File "/usr/lib/python2.5/site-packages/django/db/models/sql/query.py" in execute_sql
2369. cursor.execute(sql, params)
File "/usr/lib/python2.5/site-packages/django/db/backends/util.py" in execute
22. sql = self.db.ops.last_executed_query(self.cursor, sql, params)
File "/usr/lib/python2.5/site-packages/django/db/backends/__init__.py" in last_executed_query
213. u_params = tuple([to_unicode(val) for val in params])
File "/usr/lib/python2.5/site-packages/django/db/backends/__init__.py" in <lambda>
211. to_unicode = lambda s: force_unicode(s, strings_only=True)
File "/usr/lib/python2.5/site-packages/django/utils/encoding.py" in force_unicode
92. raise DjangoUnicodeDecodeError(s, *e.args)
Exception Type: DjangoUnicodeDecodeError at /admin/pdf/abc/
Exception Value: 'utf8' codec can't decode bytes in position 564-565: invalid data. You passed in '%PDF-1.3\n1 0 obj\n<<\n/Kids [ 4 0 R 5 0 R ]\n/Type /Pages\n/Count 2\n>>\nendobj\n2 0 obj\n<<\n/Producer (Python PDF Library \\055 http\\072\\057\\057pybrary\\056net\\057pyPdf\\057)\n>>\nendobj\n3 0 obj\n<<\n/Type /Catalog\n/Pages 1 0 R\n>>\nendobj\n4 0 obj\n<<\n/Parent 1 0 R\n/Contents 6 0 R\n/Resources 7 0 R\n/Rotate 0\n/CropBox [ 0 0 612 792 ]\n/MediaBox [ 0 0 612 792 ]\n/Type /Page\n>>\nendobj\n5 0 obj\n<<\n/Parent 1 0 R\n/Contents 17 0 R\n/Resources 18 0 R\n/Rotate 0\n/CropBox [ 0 0 612 792 ]\n/MediaBox [ 0 0 612 792 ]\n/Type /Page\n>>\nendobj\n6 0 obj\n<<\n/Length 4167\n/Filter /FlateDecode\n>>\nstream\nh\xde\xec[[o\xe36\x16~\xcf\xaf \n\x14\x90\x8a\xb1*\x92\xbaP}Yt\xda\xed\xec\x14\xdb\xe9l\x93\xc5b1\xe9\x83b\xcb\xb1&\x8e\x94Jr\x82\xfc\xfb=\x17\xd2\x96\x14G\xee\xb4\xc5n\x84m\x06cQ\x14/\xe7;<$?\x1e\x92_\xbe9\x97\xe2\xba={}q\xf6\xe5\xc5\x85\x12R\\\xac\xcf\xa4\x0e\xb2$5"\x84\x7f.\xac\xb2\xc0(\x91\xa4:0\xe2\xe2\xf6,\x14\xd7\xf0\xffb\x89?\x0fg\xdewe\xd3v\xe2]~[\xf8\x17\x1f\xcf\xfezq&\xe9\xfb\x1bx~\x0f\x85|\x142\x08\xd3L<\x08\x19\x8a\x1f\xc4\x87\x9fC\xb1\x82O\xa58Sq\x14D"I\xd2#\x1b\xb1P*\nb|FA\x98\x88\xa68{\xfd\x05$\xfb(\xce~\x01\xc1H\x1a\'G\x92\x04&\x12\xcb[\x8aEq\x16J\x07Rl\xcf\xce\xf7)\xa5\tR\x05\xa1?\x13\xbd\x84Dg\xff#\x1b;jYF\x07lY2r\xa6\xe5\xfd=?fO`\tq\x02\xd9"2\x00\xa8k\xa1L\x18\xa4\xd1\xb4\xc5p\xf9\x90A=\xb5\x98\xe4W\x01\xf83\xd5\xff]*k\xaf*\x08\x95\xce8\x83\rk\x19$J\xc4\xa1\x0c2g\xae\x8b \x0cU\x82\xc3\xe1\x07\xef\xed\xbb\xf3\x0b\x7f\x91\x05\xda\xfb\xe9\x9f\xdf#(\x82\xd0\xdb\x1f\xdf\x9d\xfb\x8b\x18B_\t\xff\xe7\x8b\xefq\xac\x8dx\xac5\x814:\x85\xe2/\xbe\xa5bb\x85\xc5# Iqd\xfd\xe0}W7\xa2\xc8\x97\x1bQ\xafE\xe7/\xa4\x0c\x8c\xb7\xf1\xe1\xa7\x10\xebz\xeb/` \xf4\xb66\xbe~(m\xa8\xba~\x85U\xa7\x9e\xb8s\x1f\x8b\x9c\xaa\x06\x18*\x89\x13\xae\x11\xe5\x8em\x85\xa1\xe1\n\xdb\xc2\xc74\x9e(\xab\x95o\x82\xd8+\xb1$\xe9-9:\xf7S\xf8\xed\nz\x88G_\xeb \xf2j_C\xc2\x1d%o\xfc\x04\xbfl9\xc5=\xc5qx+jz[s\n[ \xe7\xadz_\xcaU/SE\x9fmZ[k\xc9\xa9\x05\xa7\xe3\x02\xca\xea\xda\x97\x18\x10\xdd\xc6!\xc8\xf9\xb9d\x91\xcb\xfb>\x9c\xae\xec\x1eI!\x0b\x15\x06Q\x94i\xb1\x90\xd0\xf6*\xb5zI"\xd4\x0b6I\x94\xb1b\x1e|\x19B\xee\x08t\xd9m\xb0d\xc4\x9d\xc2\xef\x8e_:\xb1\xad9\xd4\x02\x0c\x8d\x15\x91\xfc\x14u\xcd\x0fT\x18\xccu\x9eM\xb8\xa3\xfc\r\x14\x0c\x12\x89+z\x03\xa1\x13x\xdb\xdagE\x91\x80\x1f\xa4\x03\xfc\x14\'l\xf6CFz-8\xd1\x92\x13\xb1l\xb7~\x0c\xf2\x96\xdc\xf4`\x812\x8a\x0f\xc6\xa6\x9c\xb1A$A\x04\x1d\x1aH.vU\xdb\x15\xf9\xea\xd1W\x06mh\xdd\xd4\xb7b\xb9\xa9\xeb\xb6t)\xea\n\xdb\x02\xb4\x8df\xb9\xb1\xe1\xbb\x82\xeb\x81\xea\x8d2{\x13C\x05\xb2*\xe3\x88\xebi\xa0\x90\x04\x05\x8d\xe0Q\xf8\x19\xfcV h\xe6u9\xbd\x80\xb6\xf0\x8d\xbf\x88;\xfaT#\xd8\x0c\xda\x99\x9f]K-\xc1\xfd\t\xac&S=`\\#\x04R\xdb\x8b\xea\n;O\x02Bn\xfc\x85\xc6\xa2E\xbb\xcc\xb7\x1cU\x10#6\x06h\x9d\xd4d\x86\x8c!M\xd3\xbd\xa6\xb4-P\xdb^\x12~..\xbd\xaa\x16\xcb\xbaZ\x97\xab\x82t]AO\x83\xb6]\xf2\xdb\xa5/\xba\x1a\x08O\xf8\xb9\x8f-\x0e\xc9\x97\x14_\xdf\xdem\x8b\xae\xd8\xba&\xc9\xb4\xd6{U\x85N\xf0Pq=`/\xd8y\xa1\xb3\xc4\xa0\x8a\x1a\x0c+\xf3\xaa\xb5\x8fz\xc3jA\x15\xa8:\x89\n\xb9\xf4):\x10o}\x99Qg\xc2WaK\xe0\xac;\xb1\xe2\x80\xa8\xe8QsV\xec\x8bX\xd2\x8e^\x1b\xca\xc8\xbf\x05\xd5\xcb\x89;\x1c\xc3Ro\xebdb\x04#\xe02\xa9\x18\xc1\x07\xcf\x15O\x9d\x10\x8b\xc4N\x18RccA\xd8\t\xf1{\xc9Eu\xae\xa8\xb2\x12\xbf\xecl\x8e\xb6+k\xae\xf0\x15\xb6\x15\x14\xd1\xb1,.qneBYW\xb6\xd9\xa0\x0f+\xb0\xe2q\xb3EV\x9d0\xe0\x91:\xcb\xdb\xfc\x9al\x0f\x04\xc8hl\x01\x88bS?\x88%\xb5\xd2\xbe55\xb7&\xf6j\x1a\xe3p\x98\xa1\xf7\x9dx\xa8w\xb6\xf1`\xb2P&;\x98\x9dt\xad\xa7l\x7fZ\x89\xabB\x94k,\x02\x1a~\'68z\x1a\x88\x06U\xf2\xd0\x85C\x11\xb4\x89\x8b\xd8PD!\xf2%%\xb4\xb1%\xea!\xf6\xeeK\xfbN\xc5\x05h\xbc0\xa2\xbc\xf5\x95\x04U\xae\xfdA\x9b\xa8,I\x9eZ\x95\x94{\xab\xc2y\x03$\xaa\xb8\xbdX\xc1\xb7>\xe0f\xedB\xd7\xb0M\x9d\xd0\x80#\xa9Z\x9aw\xe8\xbbm\x04\xf1\x00\x19c\x97\xe7\x86\x06al\x16\xd7\xea\xb6\x9dW\xd6(j\xd1\xb7\x0f\x1e}\xa1O\xc0*\x80Z\xce\xe0$J\x12K\xed\x86\x0c\x0c\xa1\xc8P \x0emlB)\x0f\xaf8\xa3\xa2\t\xd1`_7>\x0cA\x9b\x9a>nW\xdc\xe9j\xdb\x94\nS\xd6\xa2\xad\x81Q&^?\x16\x07M64(\x03\x8b\xc8\xb1\x0eL%l\xc9\x9czG\xc5/)\xb7\xa2\xdc\x18\xbb\x86\xc8\x92\xeb\xc2,\x1c\x89\x89\xa8\x00,\xaa\x85v\xc1)kMp\x15\x8c\xd3Q\xa8{C\xb0\x9b~\xad\xc5\xecgT\xb0\xb3\xa2\xb1\xf3\xdd\xaeEs\xc5\xc9\xe0\x1a\x15\xd7\xda\xe8vwwW70\x10\xbay]\xc6=&\xe1\xc6viK\x0ex\xb0\xc3\xd1!\x81\x96A{I\xb1:\x18\xe2q\x1c#\xcb&\xf3L\xbd{\xb0\xbf\xca~\xc0n\t\x1d\x12\xed\x0e\x90W\xad\xedn`-\xd0\xa5F\xbd-rX\xec\xa0\x9b_\xd5;\xa6,`\xe3y\xd5\x02\xa0\x12\x85\xc0I\x8d\x0c\xfa\xda\'\x89\xb02\x8d}\xcbr\x1cL\xb1\xe1\x14\x80U\x94\xb6\x08\xfb\xa5\xb8u\x9d/\xcez\x8aD\xfa\xc2}\xcf\xf1\x98W4q(4\xe5\x94fG\xc4\x93\xfb8\xfa\xb7\xfc\x02\rd\xc8\xac\x17\xf0{\x83Uc\xc2\r\xe5\x02\x1d\xacn\xcb\xaal\xbb&\xef\xea&\xa0Ja%\x12\xa4:\x02\xca\x87,\xd0\x00\x17\x84uG$\xe2(\x0c\xb4\x884\x10D\\\x83\xacG\xcb\xe9c$\x12\x87\x0e\xa1\xa3\x04\xb3X\x169\x00\xc1\x18$6\x9a\xc2\xb95\x08\x82\x07\xd0\x03\xf6)\xb0*\xe6|8\xb3\xdf\x08~\x05\xeb\xa4\xf1\x04\xc3\xbb\n\x07\x98\x88\x86\x13M\xac\x01\xbfa\xd7\xa0\xaf-\xbf\xff\xc5!\xc2\xb5\xd5a\xb9\x14\xc3H*\xb4\xc2i\xb0\xcf\x8c\x15\xae\xba\x16`\xbd\x89\x80^\x07\xc1\x18\x92Q\x08\xba\xa9\xc1\'GKZ\x8fqj\x0e\x87\x98B\xdae\x1a\xc5\x9b}\x01\x87\x1fHC\x85\xd3KhS\x86\x94\xf9\xea\x0b&\xe3\x07\xd2|L\xa31\xad\x005\x10\xf8\xf4\x88\x83\x02&\xe1\xc3B\xf2\x00V\x86P\xa9z\x99p\x8f\x81\x94!\x18\x8c\x19\xa2\xf4dx\x1c\x1b\xb6\xe4\x9c\xb0a\x0b\x8e\xb1\xa9g\xb0efV\xd8\x14\xd8\xd9\x13l\xfa86\x05\x83Bdf\x84\r\xecLF#l\xd13\xd8\xb2h^\xd8\xc0\xce\x9e`\x8b\x8fc\xd3\x91\n\xe2\x17:t\x1e\x9d\x82\xc0\xce\xd4\x08Z\xf2\x0c\xb4,\x9c\x1740\xb31\xb4\xf48\xb4H\x9bYA\x8b\xc0\xca\xc6\xd0\xcc3\xd0\x0c\xf0\xbc\x19!\x03#S\xa3\x19\xdc\xcb\x8eC\x8b\x91\x80\xce\x07Z\x0cF\xa6\xe2,{2q3-\x99\xdey\x01\xa6\tB%\ndK0\xab\xf7m\xde=q\x8b\'\x19\xf2\xc9\x04\x17~F\xa0\x13C\x8f\xb7QT\x8c\x9f&R(i\x02sH\x91F\xb8\xd12\xe5X\xb7\x82I\xdc\x12\xfa\x9d\xfb\x02\xa0\x81\xc4j \t\xd28Q\x9c\xd3\x86S\x1c\xa8\xe2,A\xcd;\xdd}i5p\x10\xc7\xa4A\xf6\xc7HsL\x06\tKA\x9d\xf4\xa48"\x81\x8cHY\xbfS\x86?z\xcf\xe5`]`B\xb0\x1ad\xd3t\xe1\x14\x9d\x9f"\x85,\xe4\xcd\xa6\x95\x94[\xc6)\xbb\xf4\xbe\xd8\x14\xe2k\xf64/a\xed\x9b\xe2J\x0c\x97\xcb%,!\x13\xef\x9e\xfd\xa9\xa5u\x97\x94E\xbbh\xef\x8ae\xb9.\x97\xe2u\xce\x1f\xb7\xf6Y-\x0b\xf1\rfF\x7f\x14\xc7\xacmY\xab\x02?^z\xfc\xfa5\'zm\x13_\xfav\x81~\xbet%R\xdd\xc5~U\x06z\x7f\x18\x18g\x1c\x07\x19\x0c\x94\x19\x02\xeb)Gc+BY\xd8N\x02 A\x07Kl\xd7\x8f1\x06\x97\x956\x11\x05y\\\xc0\x10d\xd2\x82\xd3-\\\xd6\x05\xe5\xa5\xd2\x16\xe8n\xa14<\x1elz\x8d\xb4#?\x82\x19\xb6\xd2\x13A\xd4^\x10h\x10\xae\x1e\x02{Q\xa2h/\x0b\x04\xf7\xc2`\xd8\xe5\x9f\x90\xa6\x05[P\x81\x8c\xcdHK\xd0\xbd!c\x04\xf4\x14\x1e{\xe9\x16lU\xf6\xd17\xb7\x85L\x03\x05_\xf4!1z\x9f\xd0_\xaa\xf0\xd1O\x0bc\xb4"\x88YrH\x9d\xa2\xfab\x1c6\xfbI\xb9\x0c.\xa2\'ELP\xa4\xb1\xc6\xfc\xcb\x99R\xbc^3\x19\xf6B\xdc\n\x14\xd460>\xfdKT\xa7\x17\x89.\x7f\xa6p\x9b\x87\xc6\x92\xfd\x12\xf1\x9d\xed\xcf\xbfb\xad\xa9\xd0[\xd1/\x06\xbaM\xa6\xad\xc3%S\xd6\xfd\xf1#\xfa-\xd0\x11\x8b\xbb#\xbc\'R\xde\xf8\x8b\x8c72\x16\x86\xb60\xd0\xa9\x11\x05\x19\xf9;\xd0\xadT\xb6\xfe"5\xb8S\xf4\xaciK\x18\x83\x90\x94\xc2C\'\xff\x13\xdb\x9e\x9a\xeb\x8c\xc4\n\x86\xaaQ\xbc5\xf6\x1d\x80\xcf`\xf8(\xb7[\xdc\xc2Yhr\x0c-A\x15\xec\xcfCGY\x03\xfa0\xb4\xe1\xc1\xb1\xdb\xc2\x06P/\n\xd3\x93\x12M\xe2\xb9\x0f\xa4B\xdc\xa6\x00\x15*t\x10\x95.)\xab\x10\x86\x8b0K\xc0\xba\xc0d\x94\xdc\xbb\x8b\xf6.Q\xeb.z\xbf-r\xda\xdah\x0b\xf6U\xd1K\x03\xe3\x9d\xf1\x04\xbf\xa0\xef\x08\x87#\xc3[p\x92\x9cc\x9c\x87\\G\xb1\x87\x8e\xeb\x18?t5:\xea\xc4\xd5\xf0\xb3\xa8\xd7n\x83$U\xb2\xef\xabK\xdc\xf6\xc2\xc1\r\xa8\x0c\xed\x13\xa13p\xd7\x88\xfc\x8a\\\x80\xe4\xcd\x8ah\xec\xa5\xb7\x8e\xdfl\xeaW\xa0\x01\xac}g\xf7i"O\\m9\xe1\xae\x10u\x03o\xf9\xf2\x06t\x7f\x13\xf4\x9d?\xec\xcbR)\xf9\x0b\xd0\x97\x05\x1d\xf678\xb3\xd0\x97\xd2\xdf\x11\r\xa5\x9bG\xac\xd7Y\x917\x0b\xc5\xb2\xde,i]\xc7\x99G;1\xa9w#vw\xe8\xc8\xa5m\x1f\x121e\xafu\xf8\xc4\xa3/\xed\xae\xdc\xaa~#\xe7\xa4A\x9f"\xab~\xc3\x81B\xb4]\x8e\x9b}^\xd3\x0e|]\xee,\xca\xd8\xe9\x85\x07\x05\xf4\x1c\x9d^*\xcd\xa0k~\xaa\xd3\xebE\xc2\x9dpz\rP\x9epz\xcd\x07\x1b;\xbd\x86\xd8\xa6\x9d^\xb3\xc1f\x9d^Cl\xd3N\xaf\xf9`c\xa7\xd7\x10\xdb\xb4\xd3k>\xd8\xd8\xe95\xc46\xed\xf4\x9a\r6vz\r\xa1M;\xbd\xe6\x03\x8d\x9c^Ch\xd3N\xaf\xd9#c\xa7\xd7\x10\xda\xa4\xd3k>\xc8\xd8\xe95\x846\xe9\xf4\x9a\r\xb4\xbd\xd3k<q\xefi\xc9`+U\xa1\x0bB\xb9\xadT\x85\x1c\xf4S\xd8\xa7\x8a5N6\x87\xadTi\xdc\t\x02\xb7\x1d\xad\x89~&\xbc\x99zE\x87\xa5b\xafZ\x89\xfa\x9e\xceZ\x14\xb4\x19\xddp\xb4\xe0\x83\x1a\xf0\xf5\xae\\\xd2\x87\x1b>\xaa\xc1\xfc\x1dF\x868;vh\xcf\x92\xd2\xdd\x1d\x12~\xdc`\x16-\x1fSp\xa7\xf0J\xf6\xa3\xd8\xefwE#\xd6\x96\x08\xc3\xca\x07wpo\x89\xc0\xa6tDi\xf4\xa9\xe2\xf8\x0e\x97\x11\x0b+\xa6X\xee\x0f\xff\xd9\x9a\x8a\x8e\xf2\xa1\xcc\xf6x`]7S\x9b\xbdJ\xa7A\x92\xcc\x91\xf7\xe2\xb9\x1c\xf3\xe9\xc4\xf7%\xe2\x9d"\xbe\x03\x98\xa7\x98\xefl\xc0Y\xe6;\x04w\x82\xfa\xce\x05\x9c\xa3\xbeCp\'\xb8\xefl\xc0Y\xee;\x04w\x82\xfc\xce\x06\x9c%\xbfCp\'\xd8\xef\\\xc0Y\xf6;\xc4v\x82\xfe\xce\x06\x1b\xd3\xdf!\xb6\x13\xfcw.\xd8,\xff\x1db\x9b&\xc0\xb3\x81f\t\xf0\x10\xdb4\x03\x9e\x0b\xb6\x03\x03\x1e\xcf\xe0\x03\x82\xc2\xfcW\xa6f\xcf\x7f\x93\xdfB\x80\xf1T<\xf9\\\x0f\x1eX{\x9aP\xba\xe3\xc8\x11\x10H:\x07\xaa\xf1~B\xc0Nix#I\xb1{mp\xa7M\xe3m\x11H\xbb\xdc\xf0\xf9]b\x94\x11\xf9\xa3!\xb6aZ\x0b\x03\xa5w\xeb\'t"\x11b\xc9\xd1\x9c\xb8\x87XRdEg\x16S\xc7\x9be\xa0L\xda;\xa7\xafG\xa7_\x91\xd8f\xc0X\xed\x03\xeb\xd9\x14[\xf6\xe7\xb2\x08\x18\xd9\x89\xe2\xb1\x10[*Z\x12oW\xde\xbdK6\xc5te\xa6\xe6\xc9t%n\x16}:\xd3}\x91x\'\x98\xee\x10\xe6\t\xa6;\x1fp\xcctG\xe0\xa6\x99\xeel\xc0Y\xa6;\x027\xcdt\xe7\x03\x8e\x99\xee\x08\xdc4\xd3\x9d\x0f8f\xba#p\xd3Lw6\xe0\x98\xe9\x8e\xb0M3\xdd\xf9`#\xa6;\xc26\xcdtg\x83\x8d\x99\xee\x08\xdb$\xd3\x9d\x0f4f\xba#l\x93Lw6\xd8\xf6L\xf7\xc9\x0c~\xdc\xd9+5\xcd\xf7\xb1\x06\xaa\x18\t\xa0\xbc\x9fv\xd4#&q\xa0\xa2!\xd7=\\\x9d\xb1\xa7\xd6br\xf7\xe2\xad\xa9 `\xcfh\xd0v9\xfa{+\xf1X\xef\x1a\xbe\x01\xd4\x95w]]\xb4\x02?pT\xe1\xae\xd0\xe1\x15\xec#W\xfb\xec\x15V\xbc\x92\xbdF\x12\x8c\x17\xc4\xf0\xfeP\x83\xb7\xcb\xf0"n\nE(\xba$\\\xf2u\xbd\xca\xc7\x0b\xc0"\xbf\xaa\xef\x0br+S\xfdbS\xe4\xabI\xb6\x1ae\xa8\xcb\x19\xb2\xd5(\x0e\xe2O\'\xab/\x11\xee\x14Y\xed\xa3<\xc5Ug\x83\xcdr\xd5\x01\xb6\x13Tu.\xd8\x1cU\x1d`;\xc1Tg\x83\xcd2\xd5\x01\xb6\x13Du6\xd8,Q\x1d`;\xc1S\xe7\x82\xcd\xf2\xd4\x01\xb4\x134u6\xd0\x98\xa6\x0e\xa0\x9d`\xa9s\x81fY\xea\x00\xda4I\x9d\r2KR\x07\xd0\xa69\xea\\\xa0\x1d8\xeah\xe2\x1e\xd0\x92X\xc6x\xcf\x06\xf8)(#\xc1\xe3\xf5J\xe3E\x98\x1e=M\x9e\xbf\xab\x13\xcb\x8c\xbc\xb7\xd1\xc0\xd33\xbe\xac\x83\xe6\x0e\xa9\xa4"2\xbb\x00\xa1\xe82\x8eQ\xf6\xc8\xed\xeb/N\x13a\x15I0\xc14\x0b\xfa\xd7\xc7\xa5\xde\x9fy\xb0\x17\xc8\xdf\xfbR\xf3\xe9\x03\xf8\xcd\x97>\x1e\x9b\x96t\xe8ZJ\xbeB\xae\xbd\xb2\xc2#\x0e\x9eh;?\xf6(xC\x89\x1a\x8c\xdc\xec\x83\xcc\x8b\xf1N\x80\xd2:\x15P?\x0c\xb6\xe9\x9e\x1f\xefO0\xdb\x9a\x85\xb8\xf4~\xa8+<\xcc\x80\x8e\xe3K_\xd0\x1f\x15\x02\xfa\x8f\x8d=?\x11\xba\xf3\xbc\x89\xcdw\xe9}\x9b?B}.\x07g\x812L\xa2{||\x7f\xb88u\xf5\xd1\xdf\xa5\xf7\xef"\xf7\xf1D}s\xe9S\xce\x1ec=v\xbb*\xa1k\xe3I\x12H\xe3.\xc0D\xda\xc9d\x97\x12\x9f\xfd\xcd\xdeYy\xe0\xa7X\xe2Y\x0c0\x11tJ\xa3+\xbd\\\xf1kQu"o8\xae#\x96\xcf\xd1\xa2\xdb\xe4\x1d\xbc\xf2\xdbN\xd8bJX&d\xdev+\x9c\x9c\xae\xbd\xe3 \x8c\xdd\xf1plL}\xe0\xd0U\xddYsB\x8a\xa2Ar:\xd0\x0fv\x07\xa6\nM2\xb0\xd4\t\xdc\n\x96P\xd0\xcd\x86\xc0Q\x97\x0c\xdc\xeat\x0b\x9a\x8cq}\x83v\xd2\x02"X\xbe$\xee\x1d\x960W\xf96\xc7k;x\xb4\x9c#d`\x9dao\xd9\x14\xed\xef\x12Y\xb3(\x96\xb8\x85#;\x07R\xa31\xe2\xbd\x88]\xc5qm\x07K"\x0e>\xa2\x92"o\xc3o\x05-\xd9\x82 \xf8l\xac\xaac]\x03d\x84\x95H\x86\xe4tx\xc5\xe3}\xd1\xb4\xb0\xfa\xfb\xa9\xb8\xab\x9b\xae\xac\xae\xbf\xea\xf5\xcc\xf1\xe56\x1e\xa8\xf0N\xc6\xbc\x96`x\x84_\x99\xc1\xf2\xd8\xe1~(\xbb\x8dx\xdd\xe4e%\xdeV\x1fw\xcd\xe33\xb4\x9e(\xd4\x8b\x84~t\xc9\x92\xd1\xf5\xc01\xe6\xf3\xf2\xba\xc2;h9t\xc9\x1f\xbbM\xd1\x1c\'UR\xbe\xd8v>J\xaad|\x0cju\xbd-\xc4\xfb\xa6^\x17m[\xd6U\xbe=\xceE\xd0\xd1\xa2\xe6\x036\x8a4\xdeH}j\xce=\xa0\xe2\x9b\xbaj\x8b\xaa\xdd\xb5=\xc8\xca\xd0eM\xbc\xf2\x9a\xe0,\x8e\x1e\'j\xe7#N\xa6\x10\x06\'76\xda\xb0\xcb\x9e\xeeG\x10\xac4\xbf. K\xbd\x16\xea\xbfG\x17\x94D\xff_\n\x84E\xe3\x11G\xe4\x07\xfcK\xe5K\xf1\xc6\xdd\x0ec\x90)^\xe1AB\x81\xeb\\\xfb\x80\x94\xe7P\xf0\x9bc\xd7\xffPAP\xba\t\xcc\xc0\xc9(S\xbe\x9f\xc7O\xf7\x867\xf0\xe2\x84s\x9c\x94\'\xce\xc8\xd4>U\xa0\x18/rE"\x85Y\xa9g\xa0,A\xb8\x97h\xd1\x17\x89U\xc4\x17\x08Ok\x08~\x01\xeb\xaf\x17\x08,\x10O\x03\x11\xde\xde\xc5\xc4\xbd#\x8b\xe7ttZ \xab\xa2O\x95\xc8\xaah$\xd2XE\x03\x81\xb0\r\xb0\x953#\x12\x98\x1b\x15~M\x93\'\x02I\xa0v\xa1\xb2\xca_`JC\xaafs>\xb7\xe6l\x9e\xef7\xb1\xc6J\xd38F\\`\xce\xf0\xd3\x10\x8cP|/\x90\xf9\x82^\x1e \xfb\x0f\x82-=\xccT\x08\xdaRafM\xfe?\x02\x0c\x00.\xce\xb1\x1d\n\nendstream\nendobj\n7 0 obj\n<<\n/ExtGState <<\n/GS1 8 0 R\n>>\n/Font <<\n/TT8 9 0 R\n/TT2 11 0 R\n/TT4 13 0 R\n/TT6 15 0 R\n>>\n/ProcSet [ /PDF /Text ]\n>>\nendobj\n8 0 obj\n<<\n/OPM 1\n/Type /ExtGState\n/SM 0.02000\n/OP false\n/SA false\n/op false\n>>\nendobj\n9 0 obj\n<<\n/FirstChar 48\n/Widths [ 600 0 600 600 0 600 600 0 600 600 ]\n/Encoding /WinAnsiEncoding\n/Type /Font\n/BaseFont /CourierNewPSMT\n/LastChar 57\n/FontDescriptor 10 0 R\n/Subtype /TrueType\n>>\nendobj\n10 0 obj\n<<\n/FontBBox [ -21 -680 638 1021 ]\n/StemV 42\n/Descent -300\n/XHeight -578\n/Flags 34\n/FontStretch /Normal\n/Ascent 832\n/FontName /CourierNewPSMT\n/Type /FontDescriptor\n/FontWeight 400\n/ItalicAngle 0\n/FontFamily (Courier New)\n/CapHeight 578\n>>\nendobj\n11 0 obj\n<<\n/FirstChar 32\n/Widths [ 250 0 0 0 0 0 0 0 333 333 0 0 0 333 250 0 500 500 500 500 500 500 500 500 500 500 333 0 0 0 0 500 0 722 667 722 722 0 611 0 0 389 0 0 667 944 722 778 611 0 722 556 667 722 0 0 0 722 0 0 0 0 0 0 0 500 556 444 556 444 333 500 556 278 0 556 278 833 556 500 556 0 444 389 333 556 500 722 0 500 ]\n/Encoding /WinAnsiEncoding\n/Type /Font\n/BaseFont /TimesNewRomanPS-BoldMT\n/LastChar 121\n/FontDescriptor 12 0 R\n/Subtype /TrueType\n>>\nendobj\n12 0 obj\n<<\n/FontBBox [ -558 -307 2000 1026 ]\n/StemV 136\n/Descent -216\n/XHeight -546\n/Flags 34\n/FontStretch /Normal\n/Ascent 891\n/FontName /TimesNewRomanPS-BoldMT\n/Type /FontDescriptor\n/FontWeight 700\n/ItalicAngle 0\n/FontFamily (Times New Roman)\n/CapHeight 656\n>>\nendobj\n13 0 obj\n<<\n/FirstChar 32\n/Widths [ 250 0 408 0 0 833 0 0 333 333 0 0 250 0 250 0 500 500 500 500 500 500 500 500 500 500 278 0 0 0 0 0 0 0 667 667 0 0 556 0 722 333 0 0 0 0 722 722 556 0 0 556 611 0 0 0 0 0 0 0 0 0 0 0 0 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 0 500 ]\n/Encoding /WinAnsiEncoding\n/Type /Font\n/BaseFont /TimesNewRomanPSMT\n/LastChar 121\n/FontDescriptor 14 0 R\n/Subtype /TrueType\n>>\nendobj\n14 0 obj\n<<\n/FontBBox [ -568 -307 2000 1007 ]\n/StemV 82\n/Descent -216\n/XHeight -546\n/Flags 34\n/FontStretch /Normal\n/Ascent 891\n/FontName /TimesNewRomanPSMT\n/Type /FontDescriptor\n/FontWeight 400\n/ItalicAngle 0\n/FontFamily (Times New Roman)\n/CapHeight 656\n>>\nendobj\n15 0 obj\n<<\n/FirstChar 47\n/Widths [ 278 556 556 556 556 556 556 556 556 556 556 ]\n/Encoding /WinAnsiEncoding\n/Type /Font\n/BaseFont /ArialMT\n/LastChar 57\n/FontDescriptor 16 0 R\n/Subtype /TrueType\n>>\nendobj\n16 0 obj\n<<\n/FontBBox [ -665 -325 2000 1006 ]\n/StemV 88\n/Descent -211\n/XHeight 515\n/Flags 32\n/FontStretch /Normal\n/Ascent 905\n/FontName /ArialMT\n/Type /FontDescriptor\n/FontWeight 400\n/ItalicAngle 0\n/FontFamily (Arial)\n/CapHeight 718\n>>\nendobj\n17 0 obj\n<<\n/Length 3133\n/Filter /FlateDecode\n>>\nstream\nh\xde\xd4\x9bK\x8f\xe3\xb8\x11\x80\xef\xfe\x15\xc4\x02\x01\xa4\x00\xe6\x8a\x14II\xa7\x00\xc1\x06\x13\x0c\xb0#\x82\xf1m\xb0\x07\x8f[\xfd\xd8\xf1\xb4:\xb6;\x8d\xfe\xf7\xa9b\x95l\x8bvS\x9e[\n\x03\xd8zR\xf5U\xf1\xf1y\xec\xd6M\xed\xd4\xc3\xe2\xd7O_\x8cz\xd8/\xeaJ\xb7N\x05[\xe9\xe0\x94w\x95\xae\x95\xb3\xba\x0bj\xd7/\xee\x17\x7f_-~]\xad\xac2ju\xbf0VW\xb6\xeeT\x05\xff\xc6\xed\xdaj\xdb\xaa\xe0\xad\x0eV\xad~,*hz\xa9\xab\xcaz\xb5\xda,`\xc3\xa9\xd5\xdb\xe2k\xa1\x1a\xad\x94\xd6\xe5\xb2)\xf4\xfe\xad\\\xb6\xba+\xfa\xfeE\x1d\x1e{u_.M\xad\xdbb[.\x9d6\xc50\xec\xfeV\xfe\xb1\xfa\xbc\xf8\xc7j\x01!r\x84\xbeq\xda\xc6\x00\xbb$\xc0LXU\xd0\xa6\xad\xccy`\xb8\x17\x033\x96#kcd\x1a\x82\n\xda\x17\xeb\xedw5\xbc\x1e\xf6Ow}\xd9\xe9P\xc4\x08\x1f\x87\xd2C\xc0\xaf\xfb^\xc5\xc8\xe01\xa6\xf6\xf8\xc8\xd5o\xb1\xd5\xba\x99\xe2\x1e\x06\xb5V\x9b\xf5N\xbd`\xab\xaeX\x97V\xd7\xc5\xee;\xed\xf5w\xf4\xae\x9e\x80\x1c2^<\xc3;\xee\xe3\xb3\xf8\xdc\xae\x0c\xc5x\xfa\xbf\xf1\xee\xfe-\xee\x9ab\xfd~\xcc\x8f\xa6br\x8al\xa3\x9b\xab5\xfc8E\xde\x03\xe4Y\x8a0Cn\xccP\xe0\x0cu\x94\xa1\x87\xbe\x8c\xcf?\x94X&\xf5\xf4|\x18b\x1c^\xbb\xda\xd9S2\xc6\xfb\xbd\xe7\xfb\x87\x1d\xa6T\rXh\x0f$\x94\x9b+Ev\xad\x1d\t\xc2\xed\x08\xc6M\x10\xaa1|~\xbc\x81LV\xa5)\x8ee6&V$`\x87\x0bP\xe2\xef\nw6#\xd5#\xda;x\x1d\xe0\xf2\xfd\x1e\xc2|Y\xc7 ;\xed\xad1g\xe5\x0e#"\xa7\x08\xaa\x05)\x89\xe5\xad\xb1l^[,*\xee=\xa8-\xed\x0f\xe5\x12FIqP\xd09\x0e\x8ft\xb2\x8f\xf7\xa9\x1f\xa5\x81\xb2\xd2y\xbez\x1b\x8bm\x8b\xeb\xa5v5\xdcm\x7f\xb2\xd6.\xb4p\xf5\xf9X\x181\xac\x1dS\x05\xb5\x84Wx9e\xcbBdx\x18"j \xa0\xef\xea\xf5\x05*\ny\x82\xc0\xef\x867\x1c\xd2\x80ZS]wk`q\xc5\x0b\x1d\xb8R\xe2\xba\xedt\xdb\xfe\xe4#v\xd6\xe86\x9c\xf7Q\xcb\x91W\xdd\xb1\xc8\x10\x9b-\r\xbcj\x9cO`4\x1d\xab\x8d\x04\x81r\x8aC\xeb;t]\xec\x82\xc8\xd0\x15C\x1c\xf8\xb6\x88\xe3\xbd+\xee\xa0\x18\x10\xe1\xf4\x8e-\x8fO\xbe\xf4\x11+\xe5\x0b\xbaaG3\x02t\x9e\xda7\xa7.b\xc6\x19\xc1sn\xfb\xb2-\xd4K?\xbclq\xf6\xabi\x7fW\xe2\x93\x96\xd0\xe5^\x9e\xe8\xf0\x1d\x9f~Wq\x964|\x1af\xa5\x97\xf5\xfe\xa0\xde\x87\xd7\xeb=\xa2v\x90\xf0\xf6\'{D\xddx\x1cigy\x1d{Du\x1a<\xd0\'k\xc8k\xe0.\xb1\xde\x95qR\xea\xcb8\x94\xbf\xbdB\xc1\xb1\xc3\xbe\xf4t\xfc\x0eg\xb5\x00]\x02b\xc0y\xf0\xdb{lbD\x0fpcL\x18\xcc\xf8\xaeqg\xb3F\xc7\x8fn\x1a\x9e6\xd6{\x18\n\x05"+\xaac\x8d\xc9\xa8\xa1\xd9-\xcd\xd5\xdf\xb1G\xc6)\x9a6v\xc3+m<#\xbc\xa6xLN\xf7\xb1\xb4M\xd2\xc866\xed\xaf\xf5U\xdb\xb5\xc7\x9c\xde>\x1f\xd5uu\x96\xd4\x886\xf6V_sV]\xec\xa3-\xf6)\x8d\xd14\xd8i[z\xc3\xbd=.\x85uq\x80\x15r\x88\xf3HL%\xce\xa34\x87\xfa\xe2>\xce\x0f\x90\x9e5\x9fW=\xdf\xb4Y\xc7)\xa4%N\x0b7\xee\xd4\xd8G\x9d7g\x13u5\xa6\x9c\xbbh\x1c\xed\xd0\xc2c\x89\xbd\xfd\t\xb3\x16\xf3\x13;{\xac\xc3z\x07\xdd\x16\x9a\x86\x15q{\xf7\xf4\x1c\x9bmu\xe8\x9a\xe6\xca\xe4\xe8\xb8\x90\x0f\xccP\xd3\xb2\xb8[?\xf1\xdc\xc6S]2_^\xef\xdf\x16\x15#\xfcd\xff\xb6-\x14\xba\x9dLyGd\x7f\x9a\xf2L\xe1K=.\x10\xfb\x98\xf4x4Nk\x812O\xd8t\xfc>\xe6\xc9\xe2;\xce\x88P\x02H\xfe&^\xb1\xc6\x86\xb6k^\x19\xb1\x93\xb7\xf6\xac\x93\xdbn\xea\t\xbb\xd8\xb3]\xcc\xf9R\xc7\x15\xbf\xa3\x9c\xbb\x98\xf3GLM\x80\xa5\xa3\xc6f\xe9\xe4\xdd\xf9\x95\xcfq\x872\xec)\xd6\x97\xf5n\xd3s\x0b{\xb5\x7f\xa5\x13\x9bG\x18\x07\xeb\x03\x85\x15tU\xd7\xe7\xeb\x19F\xf55\x0e5\xbc\xba)`}~~\xa6\xcd\xe1\x80\xc5\xc6\xe6\x02>:\x9e\x1d\xf8\\\\\xc9z\xaahGk\x97\x1bc\x0b1\xb6\xe6\xac\x9e\xa7\x81\x15\x82\xd1\xcdQ7k(\xd9-6\xd7\xc1\xc8\x98H\xa6k\xc7q\xc5\xab#\xd0\xf8d\x98\x95\x14oh\x1a\x12\xbc\x17\x07\x08\x8c$\x1c2\re\x12\xbbv\xc4i\xe2XR\x9bG\xda\x8c}\x14G\xc1N\x1d\xaf\x86\x18\xd7\xe3\xf9(\xad\xb8v\x0fq\xc9\xd9)n{\xc0.\xd3\x16\xb4\x86\xf4\x90\x00\xd0\xa5\xc7\xb1\xadgz\xde\xb5\x8c\xd8\n\xdc\xed4\xd5\xdc\x98\x12\xd8\xd2M\x98\n\xae\x1b\x87_0\xdc\xc3\x03O6m\x9cl\xd0\xddb>L\xc1{\xd8\x05C\xb1\xde\xf2Z\x89\xfe\x8b\x900\\#T\x83\xf5\x8c+$\x1d\xed9_5\xf9+\xde\xb2\x89\xc3\xe2]\x9d\xae\x8f\x87\xef\xa2\xb2\x1a\x9a\x88X\xb7,\xcd\xda\\\x8cf:\xedV\xea\x13\xbc\x7f\x86\x8f\x1b\x7f*\xa3\xab\xa6So\xcaT\xeaw\xf5\xf5\x8fJ\xdd\xc1\xa9\'\xb5\xf8\x8f2\x94\t\x10?\r\xb3\x19\xa8\x9fvj\xf3#\x1e\xc44\xc0\xdc\xe0\x14$\x1a\x12\x01+\x14l\x82\xbc\xd0\xd6f\x81K+\xef\xe0\x14\x04}\x90\xae\xa6\xed\n\xaf\xa0\xcd%\x1do\x8f\r\x9c^\xe0\x9a\xd8x\xdc\xa9\xf8\xca*\xde\xfc\xed\xaf\x8b\x7f\xf3g&\xf7\xf1g&\xef\xb0\xd4\xa1\x89\nw.\xad\x15\x16\xac\xa8\xfeR\xae\xfe\x1c3r\xa25\x15\xcc\x01\xee\xff\x12\xf7\x1a\xa4\x81\xcf^)da\xaa\xebhXIAhP\xc0\x0b4\xfb\x01Z\xd7IB\xb3\x95\xbdD\xab\xaf\xa3Y\x07\x8b\x9f\x1c2_\xe1G\x88\x04\xcd}\x80\xd6yIh\xa0\xa9\x97h\xfe:\x1a~N\xb0A\x0c[\xed\xc0mm\xca\x16>`\xeb\x8c(\xb6\xce]ak\xae\xb39X\xea\x05\xb19T\xf4\x0b\xb6\xf6\x03\xb6\xb6\xc1\xab\xc4\xb0u\x15~\xaaH\xd8\xba\xebl\xbe\xf6\x92\xd8<xbwe\xdd\xfe#JX\xc1\xa0ov\x12\xe0H\xbc\xa0"\xed\x89mF\xb7\x84\xa0\xb1nM\xd1ftK\n\x1a\xe9\xd6\x14mF\xb7\x84\xa0\xb1nM\xd1\xf2\xba%\x85\x8cuk\x8a\x96\xd7-)h\xac[S\xb4\x19\xdd\x12\xc26\xea\xd6\x94mF\xb7\xa4\xb0\xb1nM\xd9ftK\x08\xdb\xa8[S\xb6\x19\xdd\x92\xc2\xc6\xba5e\x9b\xd1-)F\xc2\xba\x95\xae\xdbY\xdd\xf2\x1d\xa8\x89\x18\xdd\xf2m\x87\xff\x99y\x9bnIA#\xddJ\xd0\xf2\xba%\x06-\xeaV\x82\x96\xd7-)h\xa4[\tZV\xb7\xc4\x90\x91n%hY\xdd\x12\x83F\xba\x95\xa0\xe5uK\n\x1b\xebV\xc2\x96\xd7-1l\xa4[\t[^\xb7\xa4\xb0\xb1n%ly\xdd\x12\xc3F\xba\x95\xb0\xe5uK\x8c\x91\x90n]\xac\xdby\xdd\xc2A*G\xb7\xa0k\xb6\xf6\xf4\x95\xf0\x9cp\t\x81c\xe1J\xe1f\x94K\n\x1c)W\n7#]B\xe0X\xbaR\xb8\xbcvIac\xedJ\xe1\xf2\xe2%\x05\x8e\xc5+\x85\x9bQ/!t\xa3z\xa5t3\xf2%\x85\x8e\xe5+\xa5\x9b\xd1/!t\xa3~\xa5t3\x02&\x85\x8e\x05,\xa5\x9bQ0)\x96\xc2\nv\xb9\x92\xe7%\xac2\xdaY1\x16\xe6\xba\x06\x7f\x9fw\xa3\x83Ia#\tK\xd8f\x14L\x0c[t\xb0\x84m\xc6\xc0\xa4\xb0\x91\x82%ly\x01\x13\x83F\x06\x96\xb0\xe5\xfdK\x0c\x1b\tX\xc26\xa3_R\xe0\xd8\xbf\x12\xb8\x19\xfb\x12\x03G\xfa\x95\xc0\xcd\xc8\x97\x148\xb6\xaf\x04n\xc6\xbd\xc4\xc0\x91|%p3\xea%\xc6M\xc8\xbd.\x16\xf0\xacy9\xef\xb5\tr\xcc\x0b\xa2\xaen5/1ll^S\xb6\xbcy\xc9a#\xf3\x9a\xb2\xe5\xcdK\x0c\x1b\x9b\xd7\x94-k^r\xd0\xd8\xbc\xa6lY\xf3\x92\xc3\xc6\xe65e\xcb\x9b\x97\x18\xb8\xd1\xbc\xa6py\xf3\x92\x03\xc7\xe65\x85\xcb\x9b\x97\x18\xb8\xd1\xbc\xa6py\xf3\x92\x03\xc7\xe65\x85\xcb\x9b\x97\x1c7a\xf3J\x17\xf0\xbcyU\x8d\xa0\xdfy\xb9*\xfeQ\xf6\x8d\xe2%\x04\x8d\xbdk\x8a6\xe3]R\xd0H\xbb\xa6h3\xda%\x04\x8d\xadk\x8a\x96\xb7.)d,]S\xb4\xbctIAc\xe7\x9a\xa2\xcd8\x97\x10\xb6Q\xb9\xa6l3\xca%\x85\x8d\x8dk\xca6c\\B\xd8F\xe1\x9a\xb2\xcd\x08\x97\x146\xf6\xad)\xdb\x8coI1\x12\xd6\xadt\xdd\xce\xeaV\x1d\x8c\xf6bt\xab\xf6\r\xfe\xa7\xe3m\xba%\x05\x8dt+A\xcb\xeb\x96\x18\xb4\xa8[\tZ^\xb7\xa4\xa0\x91n%hY\xdd\x12CF\xba\x95\xa0euK\x0c\x1a\xe9V\x82\x96\xd7-)l\xac[\t[^\xb7\xc4\xb0\x91n%ly\xdd\x92\xc2\xc6\xba\x95\xb0\xe5uK\x0c\x1b\xe9V\xc2\x96\xd7-1FB\xbau\xb1n\xe7u\xcb\x04\xfc\x11\xbe\x18\xdf2F\xb7\xb7~\xaf(\x86\x8d\x85k\xca6#\\b\xd8\xc8\xb8\xa6l3\xc6%\x85\x8d\x95k\xca\x96W.1h\xec\\S\xb6\xbcs\x89ac\xe9\x9a\xb2\xcdH\x97\x14\xb8\xd1\xba\xa6p3\xd6%\x06\x8e\xb5k\n7\xa3]R\xe0F\xef\x9a\xc2\xcdx\x97\x188\x16\xaf)\xdc\x8cx\x89q\x136\xaft\x01\xcf\x9a\x97\r\x9dn\xe4\xfc\xa2\xcb\x06\xafC{\xf3_4\x8a\xa1#\xf7\xba\xa0\xcb\xdb\x97\x1c\xbah_\x17ty\xff\x12CG\xfeuA\x97509pd`\x17tY\x07\x93CG\x0evA\x97\xb701xla\x17xy\x0f\x93\x83G\x1ev\x81\x97711xlb\x17xy\x17\x93\x83G.v\x81\x97\xb719\xbeB6veI\xcf\xfb\x98\x85\xc7\xb4r|\xcc\x1a\xed\xaa\xdb}L\n\x1d\xfbXJ7\xe3cb\xe8\xc8\xc7R\xba\x19\x1f\x93B\xc7>\x96\xd2\xe5}L\x0c\x1c\xfbXJ\x97\xf711t\xecc)\xdd\x8c\x8fI\xc1\x1b},\xc5\x9b\xf111x\xecc)\xde\x8c\x8fI\xc1\x1b},\xc5\x9b\xf111x\xecc)\xde\x8c\x8f\x89\xf1\x15\xf6\xb1\xcb%\x9d\x94\xc5\xd4\xba\x0b`4\xf1\x1e\xde\xae\x8d\x0eV5pK\x15\xbf\xca\\\xea\xaa\xf2N R\n>>\n/ProcSet [ /PDF /Text ]\n>>\nendobj\nxref\n0 19\n0000000000 65535 f \n0000000009 00000 n \n0000000074 00000 n \n0000000175 00000 n \n0000000224 00000 n \n0000000365 00000 n \n0000000508 00000 n \n0000004748 00000 n \n0000004880 00000 n \n0000004967 00000 n \n0000005168 00000 n \n0000005423 00000 n \n0000005890 00000 n \n0000006160 00000 n \n0000006616 00000 n \n0000006880 00000 n \n0000007085 00000 n \n0000007328 00000 n \n0000010535 00000 n \ntrailer\n<<\n/Size 19\n/Root 3 0 R\n/Info 2 0 R\n>>\nstartxref\n10668\n%%EOF\n' (<type 'str'>)
Currently Django doesn't support storing binary data in the database. I guess you inserted your data some other way. Anytime you call save() on your model containing binary data, you'll get a UnicodeDecodeError exception.
Anyway, as you state in your comment, using QuerySet.update works (since the value of this field isn't submitted to the database). If your model has the auto-generated id AutoField, you can try something like this as a workaround:
ABC.objects.filter(pk=obj.pk).update(pdf_printed='1')