log
▁▁▁⏐︎▁▁ 3647
ben_vulpes: and heningerisms: "In this paper we demonstrate a complete break of RSA-1024 as implemented in Libgcrypt." https://eprint.iacr.org/2017/627.pdf
mircea_popescu: ben_vulpes that's pretty substantial. s size ?
mircea_popescu: that'd be the other point of interest, "how big does S get"
lobbes: !!deed http://lobbesblog.com/billing/2017/q2/Minigame_payment_receipt.txt
deedbot: accepted: 1
lobbes: !!deed http://lobbesblog.com/billing/2017/q2/diana_coman_payment_receipt.txt
deedbot: accepted: 1
lobbes: !!deed http://lobbesblog.com/billing/2017/q2/mircea_popescu_payment_receipt.txt
deedbot: accepted: 1
mircea_popescu: lobbes are you going to not let delinquents auction till they pay ? :D
lobbes: mircea_popescu, hehe. I was thinking of implementing that once n00bs start using the thing. Make it Wot-based at some level; disabling auction service for people lower down in WoT once delinquent x amount of time
lobbes: I gotta say, I'm experiencing the whole "WoT make decisions easier" thing in practice now. I.e. I know hanbot is good for it, and since I trust danielpbarron's rating of Birdman, I also trust that he, too, will be good for it
mircea_popescu: yeah i think so.
asciilifeform: in very very vintage lullies, http://www.anthropark.wz.cz/venus.htm
ben_vulpes: mircea_popescu: i'll letcha know after i rerun and capture that
mircea_popescu: :)
ben_vulpes: 65536/2048 now at wall clock time of 5.5 hrs
mircea_popescu: dunm dun dun
ben_vulpes: also, was wrong last night, go impl still trouncing
mircea_popescu: ben_vulpes you should prolly also capture the M/H pairs
ben_vulpes: noted
ben_vulpes: switch to hex?
mircea_popescu: sure.
mircea_popescu: what arte you using for m source, fg ?
ben_vulpes: uniform strings; still setting all this machinery up
mircea_popescu: i mean for the actual data
ben_vulpes: once i start collecting data in earnest, yes
mircea_popescu: ya, cool
ben_vulpes: going to look at output distribution too
mircea_popescu: and do some standards : M, xor M, M+1, M-1, M shifted 1 etc
mircea_popescu: so we get some "spatial" so to speak H sets
ben_vulpes: mircea_popescu: keep 'em coming, experimental design in this space is not my strength
ben_vulpes: nifty, yes
mircea_popescu: 1sec, lemme do this right.
ben_vulpes: no hurry
mircea_popescu: ok, so for every string of FG bits called M, do hashing of M, M+1, M+2, M with first bit flipped, M with first two bits flipped, inverse of M. that's 6 items. ☟︎
mircea_popescu: add to that 2 instances of a single randomly located bit flipped.
mircea_popescu: and i think that should be it.
ben_vulpes: okie dokie
mircea_popescu: this is turning into some pretty hardcore computering, 8 versions per M, esp in the 64kb / 2kb format
mircea_popescu: but alf will have a field day diffing the hashes
mircea_popescu: 0
phf came back from the woods again ☟︎
phf: http://btcbase.org/log/2017-06-30#1677284 << i'll take a look. i've been periodically seeings parts of that lisp profiling and optimization thread ☝︎
a111: Logged on 2017-06-30 09:10 mircea_popescu: paging phf for ben_vulpes 's needs
phf: it's a special thread alright.
phf: i think ascii already made that point, that if you're profiling lisp with the vm startup, then you should also profile c machine from boot time. at the very least the vm should be warmed up by loading all the dependencies into the core, doing save-lisp on it, and then making sure that your foo.lisp has an up to date fasl. inside lisp though to achieve the optimizations you run variants of your function inside (time ...) until you bring it within the ra ☟︎
phf: nge you want
phf: you can do sampling profiler to get some idea of what your mainloop looks like, but in the code of that size you should be able to reason about it. you then ensure that you have best possible type for your task, and type annotate the mainloop functions. type annotation for speed is tricky and unless you know both the standard and your implementation in and out, you have to look at the assemble of the resulting function
asciilifeform: phf: imho sampling profilers are a wholly useless thing, 'horse with pedals', unless you're working a honeywagon (e.g. virginal trb) and have deeply nfi what the hell the program is doing
asciilifeform: whereas for item that ~you wrote~, you already have the kind of picture that a sampling profiler is giving you -- in your head ☟︎
phf: i think maybe it's worthwhile as an auxiliary exploration. you can run it and it will either confirm what you already understood, but sometimes it'll correct your understanding. either way you have to understand how sampling profiler works (particularly when it comes to sampling freq), to use it effectively
phf: if you quicklisp bulk of your code, you're still basically in honeywagon territory
asciilifeform: truly
asciilifeform: the puzzler in my head is why a ~sampling~ profiler is even necessary on anything like recent iron
asciilifeform: just rdtsc and add the result to [somewhere] every other instruction.
mircea_popescu: http://btcbase.org/log/2017-07-03#1678656 << speaking of which, whatcha up to these days ? ☝︎
a111: Logged on 2017-07-03 14:38 phf came back from the woods again
mircea_popescu: you're not gonna be remembered as "that guy who spent the whole time touristing" are you.
mircea_popescu: http://btcbase.org/log/2017-07-03#1678664 << you've not spent any time managing coders have you. ☝︎
a111: Logged on 2017-07-03 14:54 asciilifeform: whereas for item that ~you wrote~, you already have the kind of picture that a sampling profiler is giving you -- in your head
mircea_popescu: people have this uncanny ability to describe abstracts they do not in the least comprehend.
mircea_popescu: hence all those devilwish stories for instance.
asciilifeform: if you're 'managing coders' whose 'abstractions they do not in the least comprehend' it is called working honeywagon
mircea_popescu: it is, yes.
asciilifeform: and arguably the superior tool is the whip, not the statisticalprofiler.
mircea_popescu: the whipsical front-and-profile-r.
mircea_popescu: "what's the difference between whimsical and whipsical ?" "the welts."
mircea_popescu: asciilifeform http://btcbase.org/log/2017-07-03#1678649 that suit for a start ? ☝︎
a111: Logged on 2017-07-03 05:50 mircea_popescu: ok, so for every string of FG bits called M, do hashing of M, M+1, M+2, M with first bit flipped, M with first two bits flipped, inverse of M. that's 6 items.
asciilifeform: mircea_popescu: yes
mircea_popescu: at the very least should give some indication what to look at closer
asciilifeform: 2-3 hrs per 64k is depressing tho
mircea_popescu: i confess i like the idea.
asciilifeform: make the rsa hasher look great in comparison tho
mircea_popescu: as someone who has written 64kb in one sitting, it's ONLY FUCKING FAIR.
asciilifeform: mircea_popescu: how would you like to wait 6 months to press a vtree.
asciilifeform: ( a SMALL one )
mircea_popescu: 6 months is no less than 500 patches. what tree is 500 patches long ?
mircea_popescu: rebase. now you know why yo uhave to -- nobody's waiting for your 500 long tree.
asciilifeform: oblig : http://lib.ru/ZELQZNY/TheGreatSlowKings.txt
mircea_popescu: asciilifeform you can't have a computationally infeasible algo that's also easy to compute!
asciilifeform: sure you can
asciilifeform: it's called motherfucking rsa.
mircea_popescu: in taking hours it is doing EXACTLY what we wanted it to do.
mircea_popescu: asciilifeform you can't have alternatives WITHOUT ALTERNATIVE!
asciilifeform: waiwat
mircea_popescu: this can't be a thing "i want a bunch of substantially different items that are all identical to the best performing one in any arbitrarily chosen criteria"
mircea_popescu: this outlook is how america became walmart and cmachine
mircea_popescu: it pushes in 1st stage "well, select some criteria you REALLY care about then" and after that it's "wel lthis ball of warts does that, so fuck you with it"
mircea_popescu: i'm just hoping S is over 1mb for the 64kb/2kb item and yay.
asciilifeform: what'd that do
mircea_popescu: it soaks up memory.
asciilifeform: i have fpga with >1MB ~internal~ sram right here.
asciilifeform: ( incidentally mircea_popescu's hash rewards fpgaism like nothing ever has )
mircea_popescu: good for you. now you can't use it to do 5k hashes parallel.
mircea_popescu: asciilifeform every algorithm rewards not-intel-hardware.
asciilifeform: i dun think i have quite 5k individual fpga in the parts chest, no
asciilifeform: but plenty of folx do.
mircea_popescu: much like any work to be done rewards not-toyota.
asciilifeform: mircea_popescu: in case you missed it, intel/nsa bought altera couplayears ago.
asciilifeform: ( guess for what. )
mircea_popescu: for this reason.
mircea_popescu: point being, this isn't a valid objection. any work will take a truck, and any computing will take custom hardware.
asciilifeform: observation is that 'gnarly slow hash with bitwise sliders' is not so much of a pill against theenemy as running on pc hardware suggests
mircea_popescu: asciilifeform you can't unwrap it in hardware. unlike rsa, fhfs you sitll hafta iterate.
mircea_popescu: so no, in fact, it is MUCH more of a pill than rsa.
asciilifeform: i don't see any theoretical basis for this statement
mircea_popescu: hm
mircea_popescu: can you explai nhow you'd unwrap it ?
asciilifeform: relatedly, funnily enough mircea_popescu has finally created my ancient cellularautomaton PoW ! >> http://btcbase.org/log/2014-03-29#590886 ☝︎
a111: Logged on 2014-03-29 01:53 asciilifeform: encode payload as bits on a grid, and run cellular automaton
mircea_popescu: in fact the whole game of life thing was exploratory in that direction.
mircea_popescu: it kinda died out, which is a kind of ironic.
asciilifeform: arguably von neumann's original cellular thing was the original
asciilifeform: ( pre-conway )
BingoBoingo: Well, (game of/war of) life is finite. Death infinite!
asciilifeform: incidentally mircea_popescu's hash may well be susceptible to hashlifeization
mircea_popescu: very possible
asciilifeform: ( i have not yet tried, hands -- very full atm )
mircea_popescu: a lot of interesting questions for the thinking man in our age.
asciilifeform: and while we're on subj, i'd still like to see the thing applied in for the purpose i originally suggested -- a 'enemy knows 0 structure ahead of time' bitstring transform
asciilifeform: that nevertheless decompresses in something like O(N)
mircea_popescu: what structure does enemy know here ?
asciilifeform: unrelated, earlier problem
mircea_popescu: seems tyou get that for free./
asciilifeform: http://btcbase.org/log/2016-12-24#1589879 << thread ☝︎
a111: Logged on 2016-12-24 01:02 asciilifeform: incidentally, since (to borrow the lament of turing's school headmaster) 'the room already stinks of mathematics', i'll share a tidbit that i promised folx some half year ago and promptly forgot:
asciilifeform: http://btcbase.org/log/2016-12-24#1589899 << or skip straight to the meat ☝︎
a111: Logged on 2016-12-24 01:10 asciilifeform: say i want to encipher (dun matter with what) a string, 'To: mircea_popescu Subj: thermonuke launch codes ...'
mircea_popescu: am i missing something here ?
asciilifeform: see the linked thread. original subj was (the eternally misnamed) 'rsa padding' problem.
mircea_popescu: yes...
mircea_popescu: oh. right right.
mircea_popescu: reversibility.
asciilifeform: transform string S into a larger S' where -- no matter what substructure of S enemy might know, he knows nothing at all re any part of S', nor any relation between any particular substrings of S'.
mircea_popescu: asciilifeform tell you what : S + H => M.
mircea_popescu: fhf work for this purpose.
mircea_popescu: so bnasically, fhf as just a m is a hash, as s+m it's a "padding" function
asciilifeform: if S is IN S', you failed
asciilifeform: screamingly
mircea_popescu: i'm sorry ?
asciilifeform: because 'rsa padding' is not actually padding in any sense
mircea_popescu: what S' ?
asciilifeform: S' is a string indistinguishable from rngolade
asciilifeform: has to be.
mircea_popescu: well yes.
asciilifeform: i assumed '+' above meant concatenation.
asciilifeform: if it is some other operation, say which.
mircea_popescu: the idea was that you need them together. maybe concat, i guess.
mircea_popescu: maybe something better chosen.
asciilifeform: i dun see how this is to work
mircea_popescu: which part ? you're being very vague.
asciilifeform: mircea_popescuhash, as currently written, is a lossy operation
asciilifeform: in that you cannot get the input out of the output
mircea_popescu: it is not.
mircea_popescu: if you have the end S of a hashing, you can reconstruct M from H.
asciilifeform: so idea is to use S as the message, rather than the nominal hash result ?
mircea_popescu: no. if you have message M, and compute a fhf on it, and give out the M, you used fhf as a hash. if you give out both H and S, you used fhf as a "bit convertor" or w/e, the original M can be extracted, with sweat.
mircea_popescu: i'd guess 1.5x the time it took to make it.
mircea_popescu: and this should, at least to my superficial mind, work as rsa padding.
asciilifeform: i'ma have to try this on paper.
mircea_popescu: kk
mircea_popescu: i'm not 100% on it, but my own napkins seem to indicate.
mircea_popescu: asciilifeform that's also the precursory to proof of its strenght : to reverse a 64kb msg hash you need to intuit 1mb of data.
mircea_popescu: ALL of it. bitwise identical.
mircea_popescu: speaking of which, this was to be my next step, once ben_vulpes done profiling : impl a reverser, see the impact of bitwise altered S on end result.
asciilifeform: my current reading of the algo incidentally is that it IS possible for the last bit of S to flip only 1 bit of R.
mircea_popescu: is possible, yes.
mircea_popescu: it is similarily possible for last bit of xor otp to flip only last bit of r.
mircea_popescu: except there it's a ceiling and here it's a floor.
asciilifeform: well, there - one bit of input per one of output. whereas here is a hash: flipping ANY bit of the input should have an impractical-to-compute effect on ~all~ of the output
asciilifeform: whereas as i understand it, we do not have this.
mircea_popescu: as i understad, we have it exactly.
mircea_popescu: but go ahead and compute that "possible" into something ?
asciilifeform: this'll have to wait for my own napkin.
mircea_popescu: it waits, it waits.
shinohai: !~ticker --market all
jhvh1: shinohai: Bitstamp BTCUSD last: 2560.0, vol: 12050.11464246 | BTC-E BTCUSD last: 2518.362, vol: 4959.23008 | Bitfinex BTCUSD last: 2538.0, vol: 15695.64266697 | BTCChina BTCUSD last: 2664.318528, vol: 12913.91030000 | Kraken BTCUSD last: 2556.0, vol: 7185.44696892 | Volume-weighted last average: 2574.51815697
mircea_popescu: but why is it crashing
ben_vulpes: http://btcbase.org/log/2017-07-02#1678277 << electric > gas ?? ☝︎
a111: Logged on 2017-07-02 00:32 mircea_popescu: chicks love teh electric stove tho.
mircea_popescu: yeah.
ben_vulpes: i always figured the electrical stove was just another shitanium knockoff of The Real Thing; in what ways is it so much better than gas?
mircea_popescu: fine temperature control. ☟︎
mircea_popescu: gas is you know, powerful.
shinohai likes the convection properties of electric ovens
ben_vulpes: you know i was just thinking about wiring pids into my electrical unit for precision control!
ben_vulpes: pidbox is like 13 bucks on ebay with thermocouple included
mircea_popescu: aha!
mircea_popescu: better units come with it anyway.
ben_vulpes: huh, didn't know that
ben_vulpes: odds that i'll ever buy a fancy brand new stove are pretty low anyways
ben_vulpes files this away with the refrigerated drawers for the Someday Kitchen
mircea_popescu: those not such a good idea
ben_vulpes: oh why
mircea_popescu: condensation locking
ben_vulpes: oh, as water comes out of the air, pressure drops and makes opening the thing impossible?
mircea_popescu: and as moisutre in the environment cools, it either rusts on them or else outright freezes
mircea_popescu: twoferone!
ben_vulpes: ah, sad
mircea_popescu: even if it neither rusts nor frezes permawet bs is horrible for hygiene
ben_vulpes: yeah yeah
mircea_popescu: then if you insulate them they grow to where the chicks gotta work them in teams...
ben_vulpes: could vinyl slides and drip trays but the complexity begins to mount
ben_vulpes: well, figured the drawers would slide into and out of a refrigerated cabinet
mircea_popescu has spent some cycl;es optimizing restaurant kitchen of all things
ben_vulpes: not refrigerate the drawers themselves
mircea_popescu: afaik the only actual implementation oif this that ~works is in morgue. they are side of beef sized drawers, and rather expensive.
mircea_popescu: never saw a way to make them work for you know, 10 to 20lb sizes.
ben_vulpes: just spring for the walk-in, i guess.
mircea_popescu: morgue also gets benefit of 1 open a week.
mircea_popescu: ben_vulpes you know what that does to your insurance incidentally ?
asciilifeform: http://btcbase.org/log/2017-07-03#1678798 << funnily enough i always found the ~gas~ to have the superior control ☝︎
a111: Logged on 2017-07-03 17:11 mircea_popescu: fine temperature control.
mircea_popescu: weirdos saw too many moves
asciilifeform: and not only fine control -- but visible to naked eye in real time
asciilifeform: ( tall vs short flame )
mircea_popescu: asciilifeform you prolly use it in the 1000s of c
asciilifeform: lol we're speaking of stove, not forge eh
mircea_popescu: yes but do you ever make souffle ?
ben_vulpes: mircea_popescu: don't those things have internal actuators?
mircea_popescu: ben_vulpes anything made since the war does yea
asciilifeform: mircea_popescu: not recently. but it's usually made with handheld gas lamp
mircea_popescu: i was expecting to hear alcohol burner lol
ben_vulpes: and yet with the premiums?
mircea_popescu: ben_vulpes i saidf, too many movies
asciilifeform at one time worked in a lab with a massive walk in -30c. it was great, esp in july
mircea_popescu: at another time, mp lived in a place where july/dec diff was maybe 2 degrees
asciilifeform: thing wasn't just storage, either, had tables, chairs, experimental setups going 24/7
mircea_popescu: and the kinds of butterflies about
asciilifeform: mircea_popescu: hey aintcha there now again ?
mircea_popescu: aha
mircea_popescu: and in other "omfg biodiversitiers" : my power alarm has this very strident, two sharp note bee-bop noise
mircea_popescu: that day, there was a bird doing the ~exact thing outside, we thought nothing of.
mircea_popescu: he's been back ever since, ALL AROUND, perching, singing an ever more dejected bee-bop.
mircea_popescu: i'm half tempted to yank the mains just to humor him
asciilifeform: lol! good company to the dyinghddbird
mircea_popescu: it's like they got audible china in wetware
deedbot: http://phuctor.nosuchlabs.com/gpgkey/ABF23DE303BE1C82869D7925F0ACF7A8F54B420469D851530FC4121CBEC0B356 << Recent Phuctorings. - Phuctored: 1056...7673 divides RSA Moduli belonging to '177.234.7.47 (ssh-rsa key from 177.234.7.47 (13-14 June 2016 extraction) for Phuctor import. Ask asciilifeform or framedragger on Freenode, or email fd at mkj dot lt) <ssh...lt>; ' (Unknown MX CHH)
deedbot: http://phuctor.nosuchlabs.com/gpgkey/916561ADAC038BBBCFAB89EDC04A3C5CCDD51A05666CD46A292571AEC05CFC01 << Recent Phuctorings. - Phuctored: 1056...7673 divides RSA Moduli belonging to '177.234.11.157 (ssh-rsa key from 177.234.11.157 (13-14 June 2016 extraction) for Phuctor import. Ask asciilifeform or framedragger on Freenode, or email fd at mkj dot lt) <ssh...lt>; ' (Unknown MX CHH)
deedbot: http://phuctor.nosuchlabs.com/gpgkey/CCD76069BB1F8E630905F5A86CF1C77E184381E6A058E428912D0C5937551E5A << Recent Phuctorings. - Phuctored: 1056...7673 divides RSA Moduli belonging to '177.234.2.145 (ssh-rsa key from 177.234.2.145 (13-14 June 2016 extraction) for Phuctor import. Ask asciilifeform or framedragger on Freenode, or email fd at mkj dot lt) <ssh...lt>; ' (Unknown MX CHH)
deedbot: http://phuctor.nosuchlabs.com/gpgkey/B9546AF73E66CBDE87E3FB00E89C0FE7C53423CDDF964BD60DDEB18B8B6BFE82 << Recent Phuctorings. - Phuctored: 1056...7673 divides RSA Moduli belonging to '177.234.6.145 (ssh-rsa key from 177.234.6.145 (13-14 June 2016 extraction) for Phuctor import. Ask asciilifeform or framedragger on Freenode, or email fd at mkj dot lt) <ssh...lt>; ' (Unknown MX CHH)
deedbot: http://phuctor.nosuchlabs.com/gpgkey/916561ADAC038BBBCFAB89EDC04A3C5CCDD51A05666CD46A292571AEC05CFC01 << Recent Phuctorings. - Phuctored: 8874...5753 divides RSA Moduli belonging to '177.234.11.157 (ssh-rsa key from 177.234.11.157 (13-14 June 2016 extraction) for Phuctor import. Ask asciilifeform or framedragger on Freenode, or email fd at mkj dot lt) <ssh...lt>; ' (Unknown MX CHH)
mircea_popescu: o.O
asciilifeform: !$ssh 177.234.7.47 177.234.11.157 177.234.2.145
scriba: ssh banner of 177.234.7.47 as seen on 2016-06-13: SSH-1.99-DOPRA-1.5
scriba: ssh banner of 177.234.11.157 as seen on 2016-06-13: SSH-1.99-HUAWEI-1.5
scriba: ssh banner of 177.234.2.145 as seen on 2016-06-13: SSH-1.99-HUAWEI-1.5
asciilifeform: looks pretty typical
mircea_popescu: yeah, turns out. huawei ftw.
asciilifeform: in recent lulz, a 400MHz , nonwinblowztronic logic analyzer now purportedly exists, http://dreamsourcelab.com
asciilifeform: about a hundy , chinese cranking'em out
asciilifeform: xilinx + sdram + usb20tron inside.
asciilifeform not yet tried
asciilifeform: even claims to work in openbsd.
mircea_popescu: interesting
asciilifeform: still not quite pc bus speed. but massive improvement over the crapola that litters asciilifeform's bench, at least on paper.
asciilifeform: ( re pc vivisection : one item on asciilifeform's wish list, that does not currently exist : a doctored stick of sdram that can be read/written 'out of band', i.e. via another hole )
mircea_popescu: start with the true read only sticvk
asciilifeform: lol mircea_popescu can make this with a sharp knife right now!1111
asciilifeform: ( cut the r/w track )
asciilifeform: will fail boot test, but you can't have everything!1
mircea_popescu: heh
asciilifeform: anyway for n00bz : a two-hole ram stick will give you snapshots of physical memory, incl. 'prohibited' (i.e. SMM) pages, undetectably to ring-whatever soft. and likewise write - gives you much of what debug probe gives, with the difference that cpu could not refuse
asciilifeform: no matter how crippled ( see amd thread from september )
asciilifeform: stick also sees the address and data lanes, so can also record all ram fetches ( such that don't hit the cache )
asciilifeform: bonus if you have a cpu that lets you kill cache
asciilifeform: the ultimate win, of course, is that it also gives you a pc that you can magic into a known state on demand.
asciilifeform: ( pipe in memory image. )
asciilifeform: i had this , handmade and orcish, using sageprobe . but it took ~2h per bringup...
asciilifeform: ( and that was a toy box, with 1G !! )
mircea_popescu: coiuld maybe cheat and only do part of ram
asciilifeform: if you know something about the page table, can sorta cheat
asciilifeform: it dun win much, though, linux is a hog
asciilifeform: btw at some point somebody will ask, 'why not use existing gadget with dma, e.g. usb3, to diddle memory'. so answer, intel et al are implementing 'iommu', so that only nsa-approved diddles go through dma controller. plus os can see if it has usb3 etc hanging off
asciilifeform: so elementary final solution is - instrumented ram.
asciilifeform: there is no possible counter to it, short of microshit introducing single-crystal comps ( was headed there, then mooreslaw croaked, now it is unlikely to ever happen )
asciilifeform: as it is, even crapple pocket comps have standalone sdram.
asciilifeform: 'the analogue hole', if you will.
mircea_popescu: aha.
deedbot: http://qntra.net/2017/07/entertainment-today-pantsuit-legislators-propose-attacking-idea-of-presidency/ << Qntra - Entertainment Today: Pantsuit Legislators Propose Attacking Idea Of Presidency
mircea_popescu: purrfect
BingoBoingo: yvm
BingoBoingo: *tyvm
mircea_popescu: obviously the presidency is a racist/rapist institution no longer adequate fopr the needs of ourdemocracy!
mircea_popescu: just think... one single guy making decisions! on his own! having authority!
mircea_popescu: it's a scandal.