From 7a37edee07787ae3631282b47d6052d2b3cd3557 Mon Sep 17 00:00:00 2001 From: Ivan Reshetnikov Date: Mon, 21 Oct 2024 23:40:41 +0500 Subject: [PATCH] Small mastodon tweaks 1. Increase the number of replicas 2. Specify log level and default locale 3. Use starttls for smtp 4. Remove vapid_public_key from ansible vault --- mastodon.yml | 1 - roles/haproxy/files/haproxy.cfg | 3 +- roles/mastodon/meta/argument_specs.yml | 3 - roles/mastodon/tasks/main.yml | 7 +- roles/mastodon/templates/mastodon.env.j2 | 5 +- roles/mastodon/vars/main.yml | 3 +- vaulted_vars.yml | 368 +++++++++++------------ 7 files changed, 190 insertions(+), 200 deletions(-) diff --git a/mastodon.yml b/mastodon.yml index 6ddc5cd..0c1f380 100644 --- a/mastodon.yml +++ b/mastodon.yml @@ -2,7 +2,6 @@ - hosts: webservers roles: - role: mastodon - vapid_public_key: "{{ mastodon.vapid_public_key }}" vapid_private_key: "{{ mastodon.vapid_private_key }}" db_pass: "{{ postgresql_users.mastodon }}" otp_secret: "{{ mastodon.otp_secret }}" diff --git a/roles/haproxy/files/haproxy.cfg b/roles/haproxy/files/haproxy.cfg index 684e95e..84378c0 100644 --- a/roles/haproxy/files/haproxy.cfg +++ b/roles/haproxy/files/haproxy.cfg @@ -92,7 +92,8 @@ backend mastodon option forwardfor http-response set-header Referrer-Policy same-origin http-response set-header Onion-Location http://mcomfyzeyibt2unmkttoxa2li2dzpsljcp3sasrioqsks4ayrl5kk2ad.onion%[capture.req.uri] - server green mastodon-web:3000 check + server s1 mastodon-web-1:3000 check + server s2 mastodon-web-2:3000 check backend mastodon_streaming mode http diff --git a/roles/mastodon/meta/argument_specs.yml b/roles/mastodon/meta/argument_specs.yml index ab10c55..1365939 100644 --- a/roles/mastodon/meta/argument_specs.yml +++ b/roles/mastodon/meta/argument_specs.yml @@ -2,9 +2,6 @@ argument_specs: main: options: - vapid_public_key: - type: str - required: true vapid_private_key: type: str required: true diff --git a/roles/mastodon/tasks/main.yml b/roles/mastodon/tasks/main.yml index 966af09..c840411 100644 --- a/roles/mastodon/tasks/main.yml +++ b/roles/mastodon/tasks/main.yml @@ -43,7 +43,7 @@ - name: Create web container become: true community.docker.docker_container: - name: mastodon-web + name: mastodon-web-{{ item }} image: ghcr.io/mastodon/mastodon:{{ version }} env_file: /etc/mastodon/.env command: ["bundle", "exec", "puma", "-C", "config/puma.rb"] @@ -53,11 +53,10 @@ - name: minio - name: haproxy - name: authentik - ports: - - 127.0.0.1:3000:3000 volumes: - mastodon-public-system:/mastodon/public/system restart_policy: unless-stopped + loop: ["1", "2"] - name: Create streaming container become: true community.docker.docker_container: @@ -69,8 +68,6 @@ - name: mastodon - name: postgresql - name: haproxy - ports: - - 127.0.0.1:3001:4000 restart_policy: unless-stopped - name: Create sidekiq container become: true diff --git a/roles/mastodon/templates/mastodon.env.j2 b/roles/mastodon/templates/mastodon.env.j2 index b2db4e5..1e707b9 100644 --- a/roles/mastodon/templates/mastodon.env.j2 +++ b/roles/mastodon/templates/mastodon.env.j2 @@ -1,9 +1,10 @@ LOCAL_DOMAIN={{ local_domain }} ALTERNATE_DOMAINS=mcomfyzeyibt2unmkttoxa2li2dzpsljcp3sasrioqsks4ayrl5kk2ad.onion +RAILS_LOG_LEVEL=warn +DEFAULT_LOCALE=ru REDIS_HOST=redis-mastodon REDIS_PORT=6379 - CACHE_REDIS_HOST=redis-mastodon-cache CACHE_REDIS_PORT=6379 @@ -24,7 +25,7 @@ SMTP_PORT={{ smtp_port }} SMTP_LOGIN={{ smtp_login }} SMTP_PASSWORD={{ smtp_password }} SMTP_FROM_ADDRESS={{ smtp_from_address }} -SMTP_TLS=true +SMTP_ENABLE_STARTTLS=always S3_ENABLED=true S3_ENDPOINT={{ s3_endpoint }} diff --git a/roles/mastodon/vars/main.yml b/roles/mastodon/vars/main.yml index 4d11481..7e9937c 100644 --- a/roles/mastodon/vars/main.yml +++ b/roles/mastodon/vars/main.yml @@ -1,6 +1,7 @@ version: v4.3.0 local_domain: m.comfycamp.space +vapid_public_key: BKSOPo1yo71g9_u9P2bxvIMI5GekLdmz0ozoBxvVE0ERSlYYTwd2_mOOpJZoZLr312M81hQCfLfvT8zVQRUEuqU= db_host: postgresql db_user: mastodon @@ -8,7 +9,7 @@ db_name: mastodon db_port: "5432" smtp_server: comfycamp.space -smtp_port: "465" +smtp_port: "587" smtp_login: mastodon@comfycamp.space smtp_from_address: mastodon@comfycamp.space diff --git a/vaulted_vars.yml b/vaulted_vars.yml index acd9c37..9852e33 100644 --- a/vaulted_vars.yml +++ b/vaulted_vars.yml @@ -1,188 +1,182 @@ $ANSIBLE_VAULT;1.1;AES256 -35353738656233356432666161363035376563393761323334656662373866653336633932666266 -3735643232343365666534633562623065616132386132330a613232643736633363393665633866 -30303665316137626639663537353533653762366535643735383232323638303038643631333462 -3438346337393632360a396538663832373830376463623564363239306366343862316634663961 -36353664393961346132383938356363653937333736356230326431393262356530626230656238 -66363066666331333366646661306363333339343566623534353362316164326635353261623039 -65373935333763346134643634666664343432643737623462333033343433316133666435366432 -61646266663363663062666533613834353936306337663832326265343431343863373865306562 -61306330653336343563333333623834353533383561343539623633303166326437396361353361 -65643430336335623861666565353537633536353464646336663835626133623030336434646262 -36393765333631343234633162306666663334373232303035306330333230353238343463363764 -64373531613231663563393337366333316331643239626332633433646463373363353463396337 -64666332663165646333323434643439353563336437653637626266386365303233616266386466 -31633830663765306437343832343437336333396464643137353761616339653966333737643235 -64646337663335376263363035323636326162353230313334386537626166366432616462613135 -30373535663031313361633731376339393065323232313035623562396162633939653739643536 -65333133376161383161333236656634376565656235396439616164366463363330623762373838 -62653365663461343530393939313537386337313235313531313161383039386231346337343234 -34653239633664623832613664346337336661373236353534623163303938333631356133353536 -36626439656238353630323234313638326230323935303563376233333932343733343035326236 -36343530663864396366376130613065663632386464303534323463326338303930363562616362 -65376663623565623065656230656532623134663138646136303632666538306462613830306461 -37313961366430663539633039643134353739343639383537323031643066663033386331326135 -33356261393664373234336561633532666136323933393961656263336232653833643133333930 -64393861363738393130623838373966653730636136303937373664346239336232626562326434 -33623739623864306365356330393131393338313537363639353632613265343732313839633463 -34303133643136353864316564323730333630636138323762333465646161323033333130623035 -61646233336631326661376365303138316639373633313833613837326166343862366236623662 -61333836623031643933633164613938343062306365623331356231613763323965633264353132 -37393038333130613937633736633738373332623665396336376335303232346362306236373464 -31643563363732633763303734373532373862643838636663636633663835666430313439623164 -31663335393636353963376635383833323162343963393835303365616336396464363362626438 -32383339613865316631616532326335313633353166366634316630613938623635363662633364 -34353763646164363062333336383464336465656433363932363734623238636631643866396336 -37643765646634653935323064613938353463643436323132383038326636373431623661626439 -65656166303961643563323665333165626361633463383364343532616537393630373634356262 -63363461386231626437346266626235623963373532663165646439313061643266613830613636 -36386364663063373233346566313532323364656235323563643033316539353562373038613466 -38666632636632336262303233613135363437363061343330363165623530643963373034663936 -31666138383336613663346133316332373233373934336630303837646230383834373634363433 -36373266653939343739356639653833613966646335633763363566633865386235326135353861 -38333031633833313133323037333361373563633232373631343031326338346165316436393531 -65336264663530613565363638666234313937626338623832646564653465383438633730646465 -38333633643736623133636165656163316164626337336466643761373730626631393165356532 -61343239656532663439633466326237356639646536336663636562346636633831633861303761 -30336665333236343435363061356130616335353365613461636663636264626566656563653035 -34656262613239653363303131356465643464373237393762643965643735363332386630623762 -37613738316631383732393962303931386135336237313537373835663139396565306535666431 -34656161376162643761646335313863366438643963373237656437363436613031313163366636 -63356232393663636439346432356331313464313766666561643762613237333934363161386462 -64636234643432653536666432353030386165313564363734326633316438376530613432613336 -30396562323131313965633835376430656632333532623065383462613239343037653565333632 -37313866356334663362373462613932363734613138306635346132666130666535356335313639 -66373134633137396564363339366464316134643035353662353066623165356566393030363165 -65346262313566383835663764653832353438393632663862353733633230666266333233346332 -63346236316532376363373536333362613631613635613738363835623339623931653561336230 -32336365643338396536346539373936643231646638623038663361306162656663613262643063 -30303635636265666638376133666533316136633432663936306362616161343634626463396136 -37663332346434626232373564353232306366633438343832626235346632383462323132653365 -64613833343839353137363031653463616438653436633632363936373066643132386563346265 -61313165336434323136313830356464316535326635396462333932643838333639393661346331 -66326266383836396636373865646665666537636437306637316532306435626132613039643837 -31393465386362623039623263613463383262306535333966333432626363343761346565666239 -62386437636330373739393535336232636636386163316437663336326464396237626333383261 -39343263613966613562623562663562656231363835323433363037633134363838623863323334 -31616166303766376331633230666636356464303934326335353639326465316434346532656435 -62303662623736363136616237356135306566653032363331383835646431626537396433333362 -37636537653733336335356536626362656434346164303230343236613035666534333261383130 -36323262326430303137626333313733623335633435633131376663623438643064333961363232 -66636637336164333335633162623130306161366665313334633763383661333432393138666638 -31626435613663636638326166326635643664376465353733316163333732663031343262623863 -30323464346537653734353863623461333266636539616536333862383732633466613537313166 -30353132333139636163323230353963383536333334646331353131373361383538383664663638 -31353564353038306639353136663662643833623438656531343631346637333435303739303865 -37343232636633313938316433373662623833656533343234646663313736346462653339333561 -34396463396232333039303161663639313463663139616133623363393539333532373561333538 -36336462363831363935616162393963623835316238356462353366623861303965306630373765 -63323237373136303264353161303536356338316337663734383764303639373835353937356130 -39306638396631623663663535663065363439356336656663346264373730666165316432663132 -33653133343630666466313061646337383435386164613139623232343837643566343739303930 -33383663383233383037323132643137383533393535363132313266353765636431353235333237 -34656333316138613534623139633966323035343831356665323664303936626137323563656661 -64626534356233353763653363373134643933346666386635656336323663373332356133323564 -64336164646261306461636537636433366132386536396362313133353235396461373864346530 -65303137383762336666336430643334633736626633346331373638396336373831313934363934 -31616437363837363533303663613561336330386233646430333562316433376532316136313439 -38306135303235366236306534663331313237363961626562333739663434353066666332613736 -62303431633337353239353930303336386364353362396161393735366364316463326434666462 -34316162613731353431333364396432363962366238363138396339383434316464623363636134 -66646337616134656635666432643232663733313435363437633939343965316163326534626335 -32636462653237303630616133633165356233303330663763346537616133383030393562643639 -66313030306536316430336437346435633734346331623738306263356562373131663235376235 -62623164633531396236343962646665336633353162303732616663323262623031383461383262 -34323662646338396338353962373035613439643566343037626262646265623537386331393363 -30303439383430306666363466613234653737613030653963396433646631663635636665643936 -32633932643161613235643132346561373130306434626432623839363836656663383764383337 -34346463616435336139313131333734323264333939386435656433353134643330656232343732 -37666435336532366335343438646265643730623264376636356362626437306431316334653938 -38386262636336373335643639323066316436633433356635303532613032336531343931356330 -65656135613937386165363961343833313334356264316336313564633632336438366233376435 -66393138633236346333623531343738346638643338663437356565653435336538373033626333 -30306366313735616632666632303733363833336633333161393737386365303132353039306666 -66366437383036313065643562316531383433626266626438353962366331643736396139386331 -34396636656632646438386336616437313430313437396138623362393239363039366366373566 -64313033643361383864326232616333663033633264366537333439326232633439653161336366 -36653133353262626134643131663866336366343936643336316565646638616536643563653137 -34383462306533336133376331346264323133313764316132303836316534326661383561646639 -32666437363166643466616666306137336435623737643435323537303263316635323463393462 -31643163656334646663313065356437336661653534636163316564346431343037626638663533 -61383334393662313232616661353132646266633965646535313631646230656566646438653039 -62333535626337656464343236623733643030303135623732613564383934646138633635653761 -37333265363365623436636135633137373136653132653733623364356565623733333363653734 -34343065373863326632643137366535643634353232336366346135366265653430316334666130 -34393931393965623035373763633864313863613338376438326365663661343834646664663630 -66303235353431386232613935626163343433663731623931616664396661383134336663373261 -36383731303835626534313239306435346238373163393438383565616464346139663135336637 -38623761313331343861646239303038393838333762316566633234626332343836316365316364 -31643965323832396237666361346533636230633733613334633065303537623935316138396434 -65396634643730346436633736303033623431333036613463643762343532373565376331353231 -36396661623436356663333761636264336239313235393232616535633565343162383938336531 -36306333353763373031393963306135656130323663366164393837653837313831663639623432 -30626331616237376662316366363464383830333035656335303035373734623663323936626366 -64366366646262636336383037326535323565663436353062303936626163346230623937613536 -31363439383138356266626466323332666138616161666134643938363339383162643839393636 -34636433363635313035623166306266386537346562366337643466363833346366366164393261 -36653563306136663364633061343962653233313236373732363165633031653864373863343338 -30366263663136616531336566643231316266313130633733376130616130303333383031376236 -39383332316266663531613365313030323764663435326133306532326366616561313662613964 -39623534343038366335656236383430376237333631313561363137326136666139353034346132 -34653462316663326337616330626439613430393731333637396364656430353762663363643337 -33356435383237646361326233656334326136646237346533396666653133663636613738646239 -35376237663230396531623936633366363630356138633835363365366266363635653966393735 -30323937663330663635633363353230303737666361316163333934623763653338343564303462 -37633865363661613330323935376361323032656461646339323965626561633930616361656633 -65316164643764323836626234353238313861353364646635643962363830353532666465653962 -61633738653839306165303266373762356533363139346662393066363839376536343064383932 -32633562626231643961316235336565373338633139356234393566326461626637356661363465 -30346362346162373233326637326561623965643061306566363663393762626163386262353431 -30356234626130643930383538623530333165346438393135393161333361616465393764643939 -63343230333838373931646539336331333539303164393736656437343161313038653235303766 -33656266626364396266333164386639613730376337346563353961363230663235326137303937 -62353838306330353164346638643164333038353231623139353032363339633562333561376434 -31356363326634613832353864396634346433363963303363313461366135316363343739383537 -62633737313137323763656234383733373431656661336130353964666232363739333439373533 -62313466323934653734363532346337336661623434306436366135363035386135646263313635 -61393139386136663537663566346634356437386261343634633233346361393138376662643164 -35393334663036313661643764393233643463656536323438303337313439636537616266633932 -38393734616536616131333661633737323131303434316437393166343438633932333162353466 -32643532313531356534366430313331356464663535346664613333653031623633316637343561 -36656533393333366634613539616636646265386638663134386666653839323632623162613830 -32336137323133636265616132623664616661333730326261313563373363616335333831323437 -65336539353637333132303466333931303531616435313230646237373361656630626464663137 -37393330306166363836326534666430303963333430396264366261366637356462376431386664 -32353337623738613566323434666164353235336136316163396234623166636666626265353964 -63363231333039646430663930663064323533613232653063643439633233363337356333336332 -65326431393236306238326161663336666266666632356664656361646364386436373761316333 -32356232366466616433316131333737323665333837663865633036343565306561663738343433 -63363266356433626231373762366137306666363066363638353731393064393031363038316632 -61373737333762383031623738613066313835386631356334323665656363313537366139383764 -30326230643731343337653630336530386532613333623466376433363038333261333535353761 -33656131316335313639663263643039393832373063666237386639356464373231383138663038 -39633737656631653039663062626238333563613539356334393135636262366537386333656436 -31666430323035376633326434633634346630386666333733346561383738346464643665666565 -36383361646339616633323362353433353363663839346437316663373361346533343330326436 -61336639363361326334323166346533663263623963363730313233653435633765393738333262 -65623761323061373265376438636533356332636165343334383032366339316266383466653131 -65343764626638663139303765623963653531336632623538356261653537663564613564343631 -64636338363462303037613838613630656562313861323664633463383030386266396239343430 -37343064383637323237336538646566633436353966613332326136386265636664396534316134 -36336462326439626130636535326161376238383733326163353131613130373930633266333237 -63343832313766393231356665306632663937333235663236656436383866303435333161366432 -34383439353334323861663139613339353265313966353732313461303561653263623965373862 -30333961313130646536653036346639643139316164626263306131326666383931313866316630 -30316539383336643666313633663361663335663334363132626134333531313964636165616435 -31636330343739356430653263636236663433393035303734316164333465373034666536326333 -36313238343430383966666339373765666162393065313165303237393830653836666237616366 -66333866303337383461323231646532383661393762663536383533666335383533636533313630 -37386639363831326638363864343465303364363166626163373832393734373731323039363861 -35616466396530373033323332623030316637356332336166376634363239333363616162313737 -62363135616333333836653361343761633266306139376632343861663361313062376539393166 -34666435366632323337653866306630656533623034313630346137373133623331626463396464 -65393835336331376562663432306664393332343032366532343333303933313064643230336163 -37613563356135393831626466633133333434303534303632336637616130616662323662643434 -37393132626265303936363133633639653265313832396239333664326464356139353635366263 -31373034613335303139343230363465636634396636373636343561386566396536663137313935 -39616632376133653330303866333262633934333935343130383538356230306433336462643663 -313662313637336337383366383362303766 +37653938626461363138383333646263636164656664656231373239643065636334323961373563 +3137643265333762626636343035303063383765393336380a303736626138616464666133303538 +61663535633664303363356431326462396465363139616335353364366436333532626335666465 +6636373466363038350a303733633439306330393931373566623838666332363935333236643331 +32646666313833353232373463623133313133633761336134616534613165373836313661363733 +39326262333262333466353966616331623230343765336431393832376231323435383431663563 +34353833343537343535646666393433393433333637643137333763393261616664363236333563 +35353262353434643862326666303061333236373734343236313364663963626465643835626232 +31303437396131656161653730626563393237383733383339646665613530333066613263393434 +36386633633161326432616632363934363539306264616337393032636334383831333339373266 +33373836303439623131393235666531303130333464666365363336313937323538356633353431 +35353133353764653234356330616366633439356665303661643738346637316436313035353436 +35653766386564316430386635306665633038363330313365386539363735373862326461353265 +39366365383931303662323934653035386332373132666265353561623038653264303735636630 +33663966636131386536396135333839393732633264356333383864396131636364383464313934 +38336564303234386165663763303436363961323435333563353632336464363461386639313839 +35666530346237306432373039623936613932396166303431336635653832613733656535386666 +61333938393739396530656365346230343330383737623761343331613165336631646232653130 +37396639366630646334623662643135383566656133303263616538623038343338356237333862 +30306231363831313461373062366430633930633233333133366462343436613561666139613437 +32613130636332326233626663313064663132373462643331396530646636376363353934613463 +64373335303163633231386262653963346365303161656635313930303261633438306665373633 +65633864626235366638656232363332366563343535313334663764353937633731353432363033 +31396634616535643566333736363036313164366535616433616537393734326638313933623835 +32633933613365613264656432653065306531643562666336313938636131623738643965366635 +38383765333433643164303335343963626135613666666263663936386438663763316337353365 +63636362366331383634313165313466393437666134623734306632373238383561353364663930 +33636264343332373330633962393530316664373061306436356161613164613230346564323332 +66663433376465306133343866376438306164306435393233636238353331646536306161643131 +34323937623263383165616135346139613339633864393138386539353133376262616437636161 +31653333316332343463613937393963346331633134643332383130343635633731373764643763 +34393832643531316234646137353435393633373139383065363436346264613334383861326139 +36633739633661353738363134643962363162333362393765393332643864323365656634653333 +30396234666264313862656631633137306431366466653835326337393433626232613139616161 +31313661613235613163393139666162373934623737616464653137626665316436373437383964 +37643833353161636438623033383839616438626566623166616636626535353137376338346532 +39326361666164333834626533386461656565623430623537333133343665396564346465383831 +37393232386430346166373464363265646139303737396363653034386462383038633030323137 +63633034633133666337386331396531343338383534353463353237666437666236313736663536 +32626461643866623565613431646162656537363239623264366631396461313434313839326538 +37386635623233366164326430396263366438356362396336386134333264313734653630613437 +64653662636538646666326633306365646435383633353433643637336331643037343663373931 +36353363613036306636336136396333666437353965633531653863356235666561633536616639 +34643739653439376565346262343936386532333338663963656638353062333365383933663139 +35643165363136366634343362633864333936626364316131303937323261353563653666636131 +35363663663066346663636134306663363435633261383464383236306539303031656235323166 +63363435323165353431643962663330633432306131363430353538396535396537363264303131 +61303738336562363661653664613835613163623631396665646230316163623162613861386562 +33336432303836623735333066666138383539356263643035326634373834333765643063383738 +34353264363536323134376162383166626363366539616263323530313638313064346566366637 +37333133363265386234623161653635623130636362313233346534643830353433313761313637 +66666433633139353531326664376631323133643734323032356161316239316132306465643637 +33313933346165313561656139383233306130306538623966613931386564386335373265336563 +32613332393135346436646230343930306339623666613830643436636130353936643361393166 +65306432633831623438343138643166643864633930336634626633623230613263653537616266 +37636636333663326331343939353333303230323066376635393336306163326431336366396639 +62653934346239386233313639303737353236326162353866623938396533623938333164383130 +37343331636363376565386361336632653138613233303366616639366431376538333864653536 +31343832653065343363336136383363613361356532376537386138306639383835323263326337 +64663930633264303065363935613034613961393137366637656236376562366663663835393032 +66396365663537373636333334373931353634626336303439393366396238646137393665346361 +32343730343738323934326662363161323735613135613135313930383566333433376230383438 +61656139646337366466346535646462613534353536303561663165306437653434303662313462 +66306265633564313132346235356331396536333034363838393361616232323663653734353430 +62646365346130323663353436653763363362633535666464396531373331613737393632393865 +61663231333536363639316631303936343438323536633861373839346331343632623036636264 +36373664666431633837326364623864336139653535613039343762353038656165366338396638 +36353736613464343065633865323363663236383062656464653431393061366437303563666266 +38353865653666646234613736393938616165646563396538346665643632663464633035373864 +66626539383134346538623931373331646161306266376566376163323961316263353665636231 +35653638613763303233363963313937363961393137343338396634363233376633366438633637 +38343066313036353039313330313237616362323463396335343335666434333962653763323466 +31653663306565633531636330623433646137623962373435623663343635396638623764346338 +64643466333363333663393335353836366533366630353262343664363237633737303637303137 +31336335616639346266356636633166373464636363656532623865393438623964396463616166 +37613331316361396639386435323531666231613936306261303039383931323330633163306636 +37343463653230646231363061343137393364356637383964303936316339353439643635353366 +62323139626333373434336566633531653264333965366134663734326136646530643965316264 +32316631346235363237303264633033356334653339643731336133373262366433376432313639 +36333262373236373439633639336435643963633033393764383936613866383931613836633765 +66333530303964653662386236313331653031613735376263303334663061323032376238646139 +64393362336236613239323533396435336233353064663239393132373031306336623231346539 +62323965616164396230653532376362643037313931626334303263383831666462623663323039 +32316263396662643438376563663438623833363037313834623835323962353234656663393633 +37646439613637626532633339623865326163376339653737333063353630383831626639313162 +61616166356363326338303832346434326564616133643534366233316464386264636564613534 +63663266656230636166343861363235623932303434663438366335373061613166623031343563 +61613434323030636136623132656363386539383837626137303132653837333861646461386437 +63353963653665386566623066326266393365396138313536313738323161373364396261316236 +66663237636661366336313765313433303237623933306365363634396430623430383934313731 +32346533623437643538663930653761636265316632323166323930653862623331313233626230 +33613330386533623963383131336661303666333432323434323830366537386238383039636566 +30346533336337636162643866636630663034353135303565353461383765303864643666323634 +31343234383436613738626431643161373339646166316431626633323832613864316331376465 +39306234393638356663313636366263616130663163393632353234656263316264313330336563 +30343564633863346630636236616664636165373862396233353032346237316262383239656638 +31346565346331663239366465323430383539643632356363323564356337636264323262633235 +30346435626363363736323763376231393339653662663734333163333031343361373934383633 +37323538613763646232663438663136313136323363393865383336363261613665613564326133 +63306231393438376630366162646132616131646363353937616530386331616337356433663438 +39316538626264666162343961393332313364303566323234623065376434363837646134376164 +66626531366263653233306432313236303033383131636165363232656163376466656232663965 +38383666363061636436333564363136363164613531383562313464323139306436343131306137 +62323238643935616438643235346139343533626364306437653234383661343862363238613333 +39363234366433646136633236616363633761326233373961373632353831376263613365386232 +61323464366239666430366566633261393564356338396438653162663433633138343131363430 +62383130646136376461303839653662373535633637346661623238336239616132613735623839 +31663332363531366161303734303833306264356636623432393561393966666639363733623964 +65323237616136393265653564383038383138376234316334313463383338356336343863383865 +33323862623830313238343633653663323763353335613032356461613264666464613333346163 +31363331323464656530663161316663363539376139323761383335653332616338386230373139 +35313332613732363663313063666361393765326531316635616465373966346132336633376664 +37366233386136643263643765303939663331363031396435633765653034373234316663623662 +61626662616633653663373639613235336136303033666264393133643663646630353638623561 +33363462323962363062386233393862643234646330663163303762366661663665616334643262 +35653666363635393431326464383365316336626133386165663561346633626565323038353339 +39343661323136313934383764633739366235326433623339306162313039643037663262663331 +32623138353731626164333862353663623163346263643535636561383265643932353630396237 +64343536613231626636373463366639323964333866386333643332376236663461646637343537 +30343839356462363338636336636537326363663964366534356633626335396437376265366630 +33653362363435313837313138346334363936306163656337396639333534323264303062663234 +64366134363330343663363261386163646366626230666336646133306436306430386431333237 +38336330323164653035383132383766313133653934303666306438636336346234623865393863 +63303166303632316432616336626233316663636139383963616165306230363936333962623566 +39626337343735376333336535386665396339616161616133303964333463373962343033633738 +64333063376236383434376262393531663366643365386237366237623339373633636564383739 +30306231353530346334343261633136383932306665393562666632313232333666303338653339 +62343666343366613063373166396664313265343938323165303661623964656534666231636136 +66613630666439303331336661626430343537656430353330323533353062653562373739663165 +38383566303666666338303664663437663533333262316430613061383131373538323332623432 +34653766633661323638626638636136663265376634316564373936343761363838623937376361 +31373466343131363136613338643939646165393261666439656132666535626364623037646662 +39386663383661336131313537373336616137356333643965393862306262366561333336396430 +65323234656430356465623661323137386134333133356365653238373362393235373233393039 +66333665313233393139376331663932633733343533356464316565386330363663336139363565 +62333531323539643439383733373066343630363061363661346139383935653731313264643163 +62373131393330323465616132356162373638313462383131386238636635613938373137313931 +31643637653039363430343032333262616161623835353639343062303531333763356430323066 +36326437333830643736366536613331323030666237343139643430363831313639386639643733 +31346163346437626465363461356137313833343461633139366463626230326466356336333164 +61336133343164313537633632633735333066663937373363646630633162666534366636346339 +66373338363432376635613964666663383233666261613539613237386361346463353065303836 +31643131346166386163633061333939306637376636386538333265326366343639323037336332 +31303736323335363232383863636437346530333837333666373836313962376666353136396662 +36376137316430366134306238396439386333613639376661336438303863663437393036303139 +35393561343464646332343530643661643633373531376565663431363534646431643838653737 +30666235613638333734653761353239316432333533316531356434646162333431636331306232 +66343863666237353538313036393637346332663830626361656162326534363735626634643030 +64393465643061386339353262656435333166373932346530613635316465616364646433616336 +36303332303038323262333230343035353935376331346263356539313566633036303639366564 +35306631653665393162393832313866343261343330323034613130316664303131363261333033 +62653439396665383531663233373366356630653830323236306538346562333937633937333839 +36616233613636316464336164333530613238633837383135663765626163366161383131373538 +36356264373261636666336133626138303032653935333561306364636164393163383064623934 +32313532663437383135383763663766336336356461363230333362663864616166393961373636 +66363135656530303361353234303765393134333264353135663738343534396630613136666564 +35666439663031656165353337626234653038663631363034353438666130646639616538376662 +61633963636631336432363663393936303364383836393566613638613132393065393735303336 +35653934383337366631663931343063356637383037633036303030616136373864643930306332 +32623263316466616132646161376262346137346335646331376436626236346136356165633037 +34643436393766663130643764383832333635356230613933613835376261656530373864313935 +62646132353830613366656630363232646634313366353037396462316336306435656337323265 +37306265666533356337663137353832663963643735343436646338393865316463343265643937 +61613431356631333163626232623162336130323331626162343435396662636563356465666666 +65363636343930383238363164613362353261383938363334373134363136383731366232393431 +35623834356335343430346164303566633039623862323066396535373265373430633235316361 +35303738663163653432363436626462613832653435653166646464343237356130373062386630 +31636636386137393764393335343435373333333933326437313462646331613830613030663239 +33636638643830363439366363353965666531396361313061616433636262633162303231306565 +33303233336264626336663335313861666262666137343734316439643661376335336539636566 +39663937303833356561636337336131613461613432393462353064343063313036333138636661 +64303636313334336236626437366464396237316630613736383436313032613437323835626633 +65303637313062383062313639313438376333653032376437343335663663663161363939643035 +38346532643938373637643035356236396136366466636432346433326461616439376333373065 +63383539386635366637303462326230663631313931343765363635346663653761306266343462 +32373365663531323566323836396464333838303239623962666635353638336565653535366637 +63393734356639366235363163363062336539346531643934333365656466646164353161386163 +62613536343362373833336434643337616135326230303434663432656166306439373261313937 +31333631393333643834323634303933356532323331663135623262616565393766393538626565 +36633166336231656637613535333964323532646139316132373662303566633535333238323934 +37623465356236393236393138396263306432303936643764386433396263373137