Issues with restoring backup to discourse

Hi all.

I’m having issues with restoring a backup to my discourse server. I attempted to post the log file but it won’t allow new users to upload files and when K attempt to post the code in this thread it says it’s 400k lines and only 100k are allowed. Any help would be appreciated!

If you can’t post it all you’ll need to try to guess what the salient part is, probably at the end.

-- execute("WITH remaps AS (\n  SELECT from_icon, to_icon FROM (VALUES ('adjust', 'circle-half-stroke'), ('air-freshener', 'spray-can-sparkles'), ('alien-monster', 'alien-8bit'), ('allergies', 'hand-dots'), ('ambulance', 'truck-medical'), ('american-sign-language-interpreting', 'hands-asl-interpreting'), ('analytics', 'chart-mixed'), ('angle-double-down', 'angles-down'), ('angle-double-left', 'angles-left'), ('angle-double-right', 'angles-right'), ('angle-double-up', 'angles-up'), ('angry', 'face-angry'), ('apple-alt', 'apple-whole'), ('apple-crate', 'crate-apple'), ('archive', 'box-archive'), ('arrow-alt-circle-down', 'circle-down'), ('arrow-alt-circle-left', 'circle-left'), ('arrow-alt-circle-right', 'circle-right'), ('arrow-alt-circle-up', 'circle-up'), ('arrow-alt-down', 'down'), ('arrow-alt-from-bottom', 'up-from-line'), ('arrow-alt-from-left', 'right-from-line'), ('arrow-alt-from-right', 'left-from-line'), ('arrow-alt-from-top', 'down-from-line'), ('arrow-alt-left', 'left'), ('arrow-alt-right', 'right'), ('arrow-alt-square-down', 'square-down'), ('arrow-alt-square-left', 'square-left'), ('arrow-alt-square-right', 'square-right'), ('arrow-alt-square-up', 'square-up'), ('arrow-alt-to-bottom', 'down-to-line'), ('arrow-alt-to-left', 'left-to-line'), ('arrow-alt-to-right', 'right-to-line'), ('arrow-alt-to-top', 'up-to-line'), ('arrow-alt-up', 'up'), ('arrow-circle-down', 'circle-arrow-down'), ('arrow-circle-left', 'circle-arrow-left'), ('arrow-circle-right', 'circle-arrow-right'), ('arrow-circle-up', 'circle-arrow-up'), ('arrow-from-bottom', 'arrow-up-from-line'), ('arrow-from-left', 'arrow-right-from-line'), ('arrow-from-right', 'arrow-left-from-line'), ('arrow-from-top', 'arrow-down-from-line'), ('arrow-square-down', 'square-arrow-down'), ('arrow-square-left', 'square-arrow-left'), ('arrow-square-right', 'square-arrow-right'), ('arrow-square-up', 'square-arrow-up'), ('arrow-to-bottom', 'arrow-down-to-line'), ('arrow-to-left', 'arrow-left-to-line'), ('arrow-to-right', 'arrow-right-to-line'), ('arrow-to-top', 'arrow-up-to-line'), ('arrows', 'arrows-up-down-left-right'), ('arrows-alt', 'up-down-left-right'), ('arrows-alt-h', 'left-right'), ('arrows-alt-v', 'up-down'), ('arrows-h', 'arrows-left-right'), ('arrows-v', 'arrows-up-down'), ('assistive-listening-systems', 'ear-listen'), ('atlas', 'book-atlas'), ('atom-alt', 'atom-simple'), ('backspace', 'delete-left'), ('balance-scale', 'scale-balanced'), ('balance-scale-left', 'scale-unbalanced'), ('balance-scale-right', 'scale-unbalanced-flip'), ('band-aid', 'bandage'), ('barcode-alt', 'rectangle-barcode'), ('baseball-ball', 'baseball'), ('basketball-ball', 'basketball'), ('bed-alt', 'bed-front'), ('beer', 'beer-mug-empty'), ('betamax', 'cassette-betamax'), ('bible', 'book-bible'), ('biking', 'person-biking'), ('biking-mountain', 'person-biking-mountain'), ('birthday-cake', 'cake-candles'), ('blind', 'person-walking-with-cane'), ('book-alt', 'book-blank'), ('book-dead', 'book-skull'), ('book-reader', 'book-open-reader'), ('book-spells', 'book-sparkles'), ('border-style', 'border-top-left'), ('border-style-alt', 'border-bottom-right'), ('box-alt', 'box-taped'), ('box-fragile', 'square-fragile'), ('box-full', 'box-open-full'), ('box-up', 'square-this-way-up'), ('box-usd', 'box-dollar'), ('boxes', 'boxes-stacked'), ('boxes-alt', 'boxes-stacked'), ('brackets', 'brackets-square'), ('broadcast-tower', 'tower-broadcast'), ('burn', 'fire-flame-simple'), ('bus-alt', 'bus-simple'), ('calculator-alt', 'calculator-simple'), ('calendar-alt', 'calendar-days'), ('calendar-edit', 'calendar-pen'), ('calendar-times', 'calendar-xmark'), ('camera-alt', 'camera'), ('camera-home', 'camera-security'), ('car-alt', 'car-rear'), ('car-crash', 'car-burst'), ('car-mechanic', 'car-wrench'), ('caravan-alt', 'caravan-simple'), ('caret-circle-down', 'circle-caret-down'), ('caret-circle-left', 'circle-caret-left'), ('caret-circle-right', 'circle-caret-right'), ('caret-circle-up', 'circle-caret-up'), ('caret-square-down', 'square-caret-down'), ('caret-square-left', 'square-caret-left'), ('caret-square-right', 'square-caret-right'), ('caret-square-up', 'square-caret-up'), ('cctv', 'camera-cctv'), ('chalkboard-teacher', 'chalkboard-user'), ('chart-pie-alt', 'chart-pie-simple'), ('check-circle', 'circle-check'), ('check-square', 'square-check'), ('cheeseburger', 'burger-cheese'), ('chess-bishop-alt', 'chess-bishop-piece'), ('chess-clock-alt', 'chess-clock-flip'), ('chess-king-alt', 'chess-king-piece'), ('chess-knight-alt', 'chess-knight-piece'), ('chess-pawn-alt', 'chess-pawn-piece'), ('chess-queen-alt', 'chess-queen-piece'), ('chess-rook-alt', 'chess-rook-piece'), ('chevron-circle-down', 'circle-chevron-down'), ('chevron-circle-left', 'circle-chevron-left'), ('chevron-circle-right', 'circle-chevron-right'), ('chevron-circle-up', 'circle-chevron-up'), ('chevron-double-down', 'chevrons-down'), ('chevron-double-left', 'chevrons-left'), ('chevron-double-right', 'chevrons-right'), ('chevron-double-up', 'chevrons-up'), ('chevron-square-down', 'square-chevron-down'), ('chevron-square-left', 'square-chevron-left'), ('chevron-square-right', 'square-chevron-right'), ('chevron-square-up', 'square-chevron-up'), ('clinic-medical', 'house-chimney-medical'), ('cloud-download', 'cloud-arrow-down'), ('cloud-download-alt', 'cloud-arrow-down'), ('cloud-upload', 'cloud-arrow-up'), ('cloud-upload-alt', 'cloud-arrow-up'), ('cocktail', 'martini-glass-citrus'), ('coffee', 'mug-saucer'), ('coffee-togo', 'cup-togo'), ('cog', 'gear'), ('cogs', 'gears'), ('columns', 'table-columns'), ('comment-alt', 'message'), ('comment-alt-check', 'message-check'), ('comment-alt-dollar', 'message-dollar'), ('comment-alt-dots', 'message-dots'), ('comment-alt-edit', 'message-pen'), ('comment-alt-exclamation', 'message-exclamation'), ('comment-alt-lines', 'message-lines'), ('comment-alt-medical', 'message-medical'), ('comment-alt-minus', 'message-minus'), ('comment-alt-music', 'message-music'), ('comment-alt-plus', 'message-plus'), ('comment-alt-slash', 'message-slash'), ('comment-alt-smile', 'message-smile'), ('comment-alt-times', 'message-xmark'), ('comment-edit', 'comment-pen'), ('comment-times', 'comment-xmark'), ('comments-alt', 'messages'), ('comments-alt-dollar', 'messages-dollar'), ('compress-alt', 'down-left-and-up-right-to-center'), ('compress-arrows-alt', 'minimize'), ('concierge-bell', 'bell-concierge'), ('construction', 'triangle-person-digging'), ('conveyor-belt-alt', 'conveyor-belt-boxes'), ('cowbell-more', 'cowbell-circle-plus'), ('cricket', 'cricket-bat-ball'), ('crop-alt', 'crop-simple'), ('curling', 'curling-stone'), ('cut', 'scissors'), ('deaf', 'ear-deaf'), ('debug', 'ban-bug'), ('desktop-alt', 'desktop'), ('dewpoint', 'droplet-degree'), ('diagnoses', 'person-dots-from-line'), ('digging', 'person-digging'), ('digital-tachograph', 'tachograph-digital'), ('directions', 'diamond-turn-right'), ('dizzy', 'face-dizzy'), ('dolly-flatbed', 'cart-flatbed'), ('dolly-flatbed-alt', 'cart-flatbed-boxes'), ('dolly-flatbed-empty', 'cart-flatbed-empty'), ('donate', 'circle-dollar-to-slot'), ('dot-circle', 'circle-dot'), ('drafting-compass', 'compass-drafting'), ('drone-alt', 'drone-front'), ('dryer-alt', 'dryer-heat'), ('eclipse-alt', 'moon-over-sun'), ('edit', 'pen-to-square'), ('ellipsis-h', 'ellipsis'), ('ellipsis-h-alt', 'ellipsis-stroke'), ('ellipsis-v', 'ellipsis-vertical'), ('ellipsis-v-alt', 'ellipsis-stroke-vertical'), ('envelope-square', 'square-envelope'), ('exchange', 'arrow-right-arrow-left'), ('exchange-alt', 'right-left'), ('exclamation-circle', 'circle-exclamation'), ('exclamation-square', 'square-exclamation'), ('exclamation-triangle', 'triangle-exclamation'), ('expand-alt', 'up-right-and-down-left-from-center'), ('expand-arrows', 'arrows-maximize'), ('expand-arrows-alt', 'maximize'), ('external-link', 'arrow-up-right-from-square'), ('external-link-alt', 'up-right-from-square'), ('external-link-square', 'square-arrow-up-right'), ('external-link-square-alt', 'square-up-right'), ('eyedropper', 'eye-dropper'), ('fast-backward', 'backward-fast'), ('fast-forward', 'forward-fast'), ('feather-alt', 'feather-pointed'), ('female', 'person-dress'), ('field-hockey', 'field-hockey-stick-ball'), ('fighter-jet', 'jet-fighter'), ('file-alt', 'file-lines'), ('file-archive', 'file-zipper'), ('file-chart-line', 'file-chart-column'), ('file-download', 'file-arrow-down'), ('file-edit', 'file-pen'), ('file-medical-alt', 'file-waveform'), ('file-search', 'file-magnifying-glass'), ('file-times', 'file-xmark'), ('file-upload', 'file-arrow-up'), ('film-alt', 'film-simple'), ('fire-alt', 'fire-flame-curved'), ('first-aid', 'kit-medical'), ('fist-raised', 'hand-fist'), ('flag-alt', 'flag-swallowtail'), ('flame', 'fire-flame'), ('flask-poison', 'flask-round-poison'), ('flask-potion', 'flask-round-potion'), ('flushed', 'face-flushed'), ('fog', 'cloud-fog'), ('folder-download', 'folder-arrow-down'), ('folder-times', 'folder-xmark'), ('folder-upload', 'folder-arrow-up'), ('font-awesome-alt', 'square-font-awesome-stroke'), ('font-awesome-flag', 'font-awesome'), ('font-awesome-logo-full', 'font-awesome'), ('football-ball', 'football'), ('fragile', 'wine-glass-crack'), ('frosty-head', 'snowman-head'), ('frown', 'face-frown'), ('frown-open', 'face-frown-open'), ('funnel-dollar', 'filter-circle-dollar'), ('game-board-alt', 'game-board-simple'), ('gamepad-alt', 'gamepad-modern'), ('glass-champagne', 'champagne-glass'), ('glass-cheers', 'champagne-glasses'), ('glass-martini', 'martini-glass-empty'), ('glass-martini-alt', 'martini-glass'), ('glass-whiskey', 'whiskey-glass'), ('glass-whiskey-rocks', 'whiskey-glass-ice'), ('glasses-alt', 'glasses-round'), ('globe-africa', 'earth-africa'), ('globe-americas', 'earth-americas'), ('globe-asia', 'earth-asia'), ('globe-europe', 'earth-europe'), ('golf-ball', 'golf-ball-tee'), ('grimace', 'face-grimace'), ('grin', 'face-grin'), ('grin-alt', 'face-grin-wide'), ('grin-beam', 'face-grin-beam'), ('grin-beam-sweat', 'face-grin-beam-sweat'), ('grin-hearts', 'face-grin-hearts'), ('grin-squint', 'face-grin-squint'), ('grin-squint-tears', 'face-grin-squint-tears'), ('grin-stars', 'face-grin-stars'), ('grin-tears', 'face-grin-tears'), ('grin-tongue', 'face-grin-tongue'), ('grin-tongue-squint', 'face-grin-tongue-squint'), ('grin-tongue-wink', 'face-grin-tongue-wink'), ('grin-wink', 'face-grin-wink'), ('grip-horizontal', 'grip'), ('h-square', 'square-h'), ('hamburger', 'burger'), ('hand-holding-usd', 'hand-holding-dollar'), ('hand-holding-water', 'hand-holding-droplet'), ('hand-paper', 'hand'), ('hand-receiving', 'hands-holding-diamond'), ('hand-rock', 'hand-back-fist'), ('hands-heart', 'hands-holding-heart'), ('hands-helping', 'handshake-angle'), ('hands-usd', 'hands-holding-dollar'), ('hands-wash', 'hands-bubbles'), ('handshake-alt', 'handshake-simple'), ('handshake-alt-slash', 'handshake-simple-slash'), ('hard-hat', 'helmet-safety'), ('hdd', 'hard-drive'), ('head-vr', 'head-side-goggles'), ('headphones-alt', 'headphones-simple'), ('heart-broken', 'heart-crack'), ('heart-circle', 'circle-heart'), ('heart-rate', 'wave-pulse'), ('heart-square', 'square-heart'), ('heartbeat', 'heart-pulse'), ('hiking', 'person-hiking'), ('history', 'clock-rotate-left'), ('home', 'house'), ('home-alt', 'house'), ('home-heart', 'house-heart'), ('home-lg', 'house-chimney'), ('home-lg-alt', 'house'), ('hospital-alt', 'hospital'), ('hospital-symbol', 'circle-h'), ('hot-tub', 'hot-tub-person'), ('hourglass-half', 'hourglass'), ('house-damage', 'house-chimney-crack'), ('house-leave', 'house-person-leave'), ('house-return', 'house-person-return'), ('hryvnia', 'hryvnia-sign'), ('humidity', 'droplet-percent'), ('icons-alt', 'symbols'), ('id-card-alt', 'id-card-clip'), ('industry-alt', 'industry-windows'), ('info-circle', 'circle-info'), ('info-square', 'square-info'), ('innosoft', '42-group'), ('inventory', 'shelves'), ('journal-whills', 'book-journal-whills'), ('kiss', 'face-kiss'), ('kiss-beam', 'face-kiss-beam'), ('kiss-wink-heart', 'face-kiss-wink-heart'), ('landmark-alt', 'landmark-dome'), ('laptop-house', 'house-laptop'), ('laugh', 'face-laugh'), ('laugh-beam', 'face-laugh-beam'), ('laugh-squint', 'face-laugh-squint'), ('laugh-wink', 'face-laugh-wink'), ('level-down', 'arrow-turn-down'), ('level-down-alt', 'turn-down'), ('level-up', 'arrow-turn-up'), ('level-up-alt', 'turn-up'), ('list-alt', 'rectangle-list'), ('location', 'location-crosshairs'), ('location-circle', 'circle-location-arrow'), ('location-slash', 'location-crosshairs-slash'), ('lock-alt', 'lock-keyhole'), ('lock-open-alt', 'lock-keyhole-open'), ('long-arrow-alt-down', 'down-long'), ('long-arrow-alt-left', 'left-long'), ('long-arrow-alt-right', 'right-long'), ('long-arrow-alt-up', 'up-long'), ('long-arrow-down', 'arrow-down-long'), ('long-arrow-left', 'arrow-left-long'), ('long-arrow-right', 'arrow-right-long'), ('long-arrow-up', 'arrow-up-long'), ('low-vision', 'eye-low-vision'), ('luchador', 'luchador-mask'), ('luggage-cart', 'cart-flatbed-suitcase'), ('magic', 'wand-magic'), ('mail-bulk', 'envelopes-bulk'), ('male', 'person'), ('map-marked', 'map-location'), ('map-marked-alt', 'map-location-dot'), ('map-marker', 'location-pin'), ('map-marker-alt', 'location-dot'), ('map-marker-alt-slash', 'location-dot-slash'), ('map-marker-check', 'location-check'), ('map-marker-edit', 'location-pen'), ('map-marker-exclamation', 'location-exclamation'), ('map-marker-minus', 'location-minus'), ('map-marker-plus', 'location-plus'), ('map-marker-question', 'location-question'), ('map-marker-slash', 'location-pin-slash'), ('map-marker-smile', 'location-smile'), ('map-marker-times', 'location-xmark'), ('map-signs', 'signs-post'), ('mars-stroke-h', 'mars-stroke-right'), ('mars-stroke-v', 'mars-stroke-up'), ('medium-m', 'medium'), ('medkit', 'suitcase-medical'), ('meh', 'face-meh'), ('meh-blank', 'face-meh-blank'), ('meh-rolling-eyes', 'face-rolling-eyes'), ('microphone-alt', 'microphone-lines'), ('microphone-alt-slash', 'microphone-lines-slash'), ('mind-share', 'brain-arrow-curved-right'), ('minus-circle', 'circle-minus'), ('minus-hexagon', 'hexagon-minus'), ('minus-octagon', 'octagon-minus'), ('minus-square', 'square-minus'), ('mobile-alt', 'mobile-screen-button'), ('mobile-android', 'mobile'), ('mobile-android-alt', 'mobile-screen'), ('money-bill-alt', 'money-bill-1'), ('money-bill-wave-alt', 'money-bill-1-wave'), ('money-check-alt', 'money-check-dollar'), ('money-check-edit', 'money-check-pen'), ('money-check-edit-alt', 'money-check-dollar-pen'), ('monitor-heart-rate', 'monitor-waveform'), ('mouse', 'computer-mouse'), ('mouse-alt', 'computer-mouse-scrollwheel'), ('mouse-pointer', 'arrow-pointer'), ('music-alt', 'music-note'), ('music-alt-slash', 'music-note-slash'), ('oil-temp', 'oil-temperature'), ('page-break', 'file-dashed-line'), ('paint-brush', 'paintbrush'), ('paint-brush-alt', 'paintbrush-fine'), ('paint-brush-fine', 'paintbrush-fine'), ('pallet-alt', 'pallet-boxes'), ('paragraph-rtl', 'paragraph-left'), ('parking', 'square-parking'), ('parking-circle', 'circle-parking'), ('parking-circle-slash', 'ban-parking'), ('parking-slash', 'square-parking-slash'), ('pastafarianism', 'spaghetti-monster-flying'), ('pause-circle', 'circle-pause'), ('paw-alt', 'paw-simple'), ('pen-alt', 'pen-clip'), ('pen-square', 'square-pen'), ('pencil-alt', 'pencil'), ('pencil-paintbrush', 'pen-paintbrush'), ('pencil-ruler', 'pen-ruler'), ('pennant', 'flag-pennant'), ('people-arrows', 'people-arrows-left-right'), ('people-carry', 'people-carry-box'), ('percentage', 'percent'), ('person-carry', 'person-carry-box'), ('phone-alt', 'phone-flip'), ('phone-laptop', 'laptop-mobile'), ('phone-square', 'square-phone'), ('phone-square-alt', 'square-phone-flip'), ('photo-video', 'photo-film'), ('plane-alt', 'plane-engines'), ('play-circle', 'circle-play'), ('plus-circle', 'circle-plus'), ('plus-hexagon', 'hexagon-plus'), ('plus-octagon', 'octagon-plus'), ('plus-square', 'square-plus'), ('poll', 'square-poll-vertical'), ('poll-h', 'square-poll-horizontal'), ('portal-enter', 'person-to-portal'), ('portal-exit', 'person-from-portal'), ('portrait', 'image-portrait'), ('pound-sign', 'sterling-sign'), ('pray', 'person-praying'), ('praying-hands', 'hands-praying'), ('prescription-bottle-alt', 'prescription-bottle-medical'), ('presentation', 'presentation-screen'), ('print-search', 'print-magnifying-glass'), ('procedures', 'bed-pulse'), ('project-diagram', 'diagram-project'), ('question-circle', 'circle-question'), ('question-square', 'square-question'), ('quran', 'book-quran'), ('rabbit-fast', 'rabbit-running'), ('radiation-alt', 'circle-radiation'), ('radio-alt', 'radio-tuner'), ('random', 'shuffle'), ('rectangle-landscape', 'rectangle'), ('rectangle-portrait', 'rectangle-vertical'), ('redo', 'arrow-rotate-right'), ('redo-alt', 'rotate-right'), ('remove-format', 'text-slash'), ('repeat-1-alt', 'arrows-repeat-1'), ('repeat-alt', 'arrows-repeat'), ('retweet-alt', 'arrows-retweet'), ('rss-square', 'square-rss'), ('running', 'person-running'), ('sad-cry', 'face-sad-cry'), ('sad-tear', 'face-sad-tear'), ('save', 'floppy-disk'), ('sax-hot', 'saxophone-fire'), ('scalpel-path', 'scalpel-line-dashed'), ('scanner-image', 'scanner'), ('search', 'magnifying-glass'), ('search-dollar', 'magnifying-glass-dollar'), ('search-location', 'magnifying-glass-location'), ('search-minus', 'magnifying-glass-minus'), ('search-plus', 'magnifying-glass-plus'), ('sensor-alert', 'sensor-triangle-exclamation'), ('sensor-smoke', 'sensor-cloud'), ('share-alt', 'share-nodes'), ('share-alt-square', 'square-share-nodes'), ('share-square', 'share-from-square'), ('shield-alt', 'shield-halved'), ('shipping-fast', 'truck-fast'), ('shipping-timed', 'truck-clock'), ('shopping-bag', 'bag-shopping'), ('shopping-basket', 'basket-shopping'), ('shopping-cart', 'cart-shopping'), ('shuttle-van', 'van-shuttle'), ('sign', 'sign-hanging'), ('sign-in', 'arrow-right-to-bracket'), ('sign-in-alt', 'right-to-bracket'), ('sign-language', 'hands'), ('sign-out', 'arrow-right-from-bracket'), ('sign-out-alt', 'right-from-bracket'), ('signal-1', 'signal-weak'), ('signal-2', 'signal-fair'), ('signal-3', 'signal-good'), ('signal-4', 'signal-strong'), ('signal-alt', 'signal-bars'), ('signal-alt-1', 'signal-bars-weak'), ('signal-alt-2', 'signal-bars-fair'), ('signal-alt-3', 'signal-bars-good'), ('signal-alt-slash', 'signal-bars-slash'), ('skating', 'person-skating'), ('ski-jump', 'person-ski-jumping'), ('ski-lift', 'person-ski-lift'), ('skiing', 'person-skiing'), ('skiing-nordic', 'person-skiing-nordic'), ('slack-hash', 'slack'), ('sledding', 'person-sledding'), ('sliders-h', 'sliders'), ('sliders-h-square', 'square-sliders'), ('sliders-v', 'sliders-up'), ('sliders-v-square', 'square-sliders-vertical'), ('smile', 'face-smile'), ('smile-beam', 'face-smile-beam'), ('smile-plus', 'face-smile-plus'), ('smile-wink', 'face-smile-wink'), ('smoking-ban', 'ban-smoking'), ('sms', 'comment-sms'), ('snapchat-ghost', 'snapchat'), ('snowboarding', 'person-snowboarding'), ('snowmobile', 'person-snowmobiling'), ('sort-alpha-down', 'arrow-down-a-z'), ('sort-alpha-down-alt', 'arrow-down-z-a'), ('sort-alpha-up', 'arrow-up-a-z'), ('sort-alpha-up-alt', 'arrow-up-z-a'), ('sort-alt', 'arrow-down-arrow-up'), ('sort-amount-down', 'arrow-down-wide-short'), ('sort-amount-down-alt', 'arrow-down-short-wide'), ('sort-amount-up', 'arrow-up-wide-short'), ('sort-amount-up-alt', 'arrow-up-short-wide'), ('sort-circle', 'circle-sort'), ('sort-circle-down', 'circle-sort-down'), ('sort-circle-up', 'circle-sort-up'), ('sort-numeric-down', 'arrow-down-1-9'), ('sort-numeric-down-alt', 'arrow-down-9-1'), ('sort-numeric-up', 'arrow-up-1-9'), ('sort-numeric-up-alt', 'arrow-up-9-1'), ('sort-shapes-down', 'arrow-down-triangle-square'), ('sort-shapes-down-alt', 'arrow-down-square-triangle'), ('sort-shapes-up', 'arrow-up-triangle-square'), ('sort-shapes-up-alt', 'arrow-up-square-triangle'), ('sort-size-down', 'arrow-down-big-small'), ('sort-size-down-alt', 'arrow-down-small-big'), ('sort-size-up', 'arrow-up-big-small'), ('sort-size-up-alt', 'arrow-up-small-big'), ('soup', 'bowl-hot'), ('space-shuttle', 'shuttle-space'), ('space-station-moon-alt', 'space-station-moon-construction'), ('square-root-alt', 'square-root-variable'), ('star-half-alt', 'star-half-stroke'), ('starfighter-alt', 'starfighter-twin-ion-engine'), ('step-backward', 'backward-step'), ('step-forward', 'forward-step'), ('sticky-note', 'note-sticky'), ('stop-circle', 'circle-stop'), ('store-alt', 'shop'), ('store-alt-slash', 'shop-slash'), ('stream', 'bars-staggered'), ('subway', 'train-subway'), ('surprise', 'face-surprise'), ('swimmer', 'person-swimming'), ('swimming-pool', 'water-ladder'), ('sync', 'arrows-rotate'), ('sync-alt', 'rotate'), ('table-tennis', 'table-tennis-paddle-ball'), ('tablet-alt', 'tablet-screen-button'), ('tablet-android', 'tablet'), ('tablet-android-alt', 'tablet-screen'), ('tachometer', 'gauge-simple'), ('tachometer-alt', 'gauge'), ('tachometer-alt-average', 'gauge-med'), ('tachometer-alt-fast', 'gauge'), ('tachometer-alt-fastest', 'gauge-max'), ('tachometer-alt-slow', 'gauge-low'), ('tachometer-alt-slowest', 'gauge-min'), ('tachometer-average', 'gauge-simple-med'), ('tachometer-fast', 'gauge-simple'), ('tachometer-fastest', 'gauge-simple-max'), ('tachometer-slow', 'gauge-simple-low'), ('tachometer-slowest', 'gauge-simple-min'), ('tanakh', 'book-tanakh'), ('tasks', 'list-check'), ('tasks-alt', 'bars-progress'), ('telegram-plane', 'telegram'), ('temperature-down', 'temperature-arrow-down'), ('temperature-frigid', 'temperature-snow'), ('temperature-hot', 'temperature-sun'), ('temperature-up', 'temperature-arrow-up'), ('tenge', 'tenge-sign'), ('th', 'table-cells'), ('th-large', 'table-cells-large'), ('th-list', 'table-list'), ('theater-masks', 'masks-theater'), ('thermometer-empty', 'temperature-empty'), ('thermometer-full', 'temperature-full'), ('thermometer-half', 'temperature-half'), ('thermometer-quarter', 'temperature-quarter'), ('thermometer-three-quarters', 'temperature-three-quarters'), ('thumb-tack', 'thumbtack'), ('thunderstorm', 'cloud-bolt'), ('thunderstorm-moon', 'cloud-bolt-moon'), ('thunderstorm-sun', 'cloud-bolt-sun'), ('ticket-alt', 'ticket-simple'), ('times', 'xmark'), ('times-circle', 'circle-xmark'), ('times-hexagon', 'hexagon-xmark'), ('times-octagon', 'octagon-xmark'), ('times-square', 'square-xmark'), ('tint', 'droplet'), ('tint-slash', 'droplet-slash'), ('tired', 'face-tired'), ('toilet-paper-alt', 'toilet-paper-blank'), ('tombstone-alt', 'tombstone-blank'), ('tools', 'screwdriver-wrench'), ('torah', 'scroll-torah'), ('tram', 'train-tram'), ('transgender-alt', 'transgender'), ('trash-alt', 'trash-can'), ('trash-restore', 'trash-arrow-up'), ('trash-restore-alt', 'trash-can-arrow-up'), ('trash-undo-alt', 'trash-can-undo'), ('tree-alt', 'tree-deciduous'), ('triangle-music', 'triangle-instrument'), ('trophy-alt', 'trophy-star'), ('truck-couch', 'truck-ramp-couch'), ('truck-loading', 'truck-ramp-box'), ('tshirt', 'shirt'), ('tv-alt', 'tv'), ('undo', 'arrow-rotate-left'), ('undo-alt', 'rotate-left'), ('university', 'building-columns'), ('unlink', 'link-slash'), ('unlock-alt', 'unlock-keyhole'), ('usd-circle', 'circle-dollar'), ('usd-square', 'square-dollar'), ('user-alt', 'user-large'), ('user-alt-slash', 'user-large-slash'), ('user-chart', 'chart-user'), ('user-circle', 'circle-user'), ('user-cog', 'user-gear'), ('user-edit', 'user-pen'), ('user-friends', 'user-group'), ('user-hard-hat', 'user-helmet-safety'), ('user-md', 'user-doctor'), ('user-md-chat', 'user-doctor-message'), ('user-times', 'user-xmark'), ('users-class', 'screen-users'), ('users-cog', 'users-gear'), ('users-crown', 'user-group-crown'), ('utensil-fork', 'fork'), ('utensil-knife', 'knife'), ('utensil-spoon', 'spoon'), ('utensils-alt', 'fork-knife'), ('vhs', 'cassette-vhs'), ('volleyball-ball', 'volleyball'), ('volume-down', 'volume-low'), ('volume-mute', 'volume-xmark'), ('volume-up', 'volume-high'), ('vote-nay', 'xmark-to-slot'), ('vote-yea', 'check-to-slot'), ('walking', 'person-walking'), ('warehouse-alt', 'warehouse-full'), ('washer', 'washing-machine'), ('water-lower', 'water-arrow-down'), ('water-rise', 'water-arrow-up'), ('waveform-path', 'waveform-lines'), ('webcam', 'camera-web'), ('webcam-slash', 'camera-web-slash'), ('weight', 'weight-scale'), ('wifi-1', 'wifi-weak'), ('wifi-2', 'wifi-fair'), ('window-alt', 'window-flip'), ('window-close', 'rectangle-xmark'), ('wine-glass-alt', 'wine-glass-empty')) AS mapping(from_icon, to_icon)\n)\nUPDATE badges\nSET icon =\n  CASE\n    WHEN icon LIKE 'fab-%' THEN CONCAT('fab-', remaps.to_icon)\n    WHEN icon LIKE 'far-%' THEN CONCAT('far-', remaps.to_icon)\n    WHEN icon LIKE 'fab fa-%' THEN CONCAT('fab-', remaps.to_icon)\n    WHEN icon LIKE 'far fa-%' THEN CONCAT('far-', remaps.to_icon)\n    ELSE remaps.to_icon\n  END\nFROM remaps\nWHERE icon = remaps.from_icon\n  OR icon = CONCAT('fa-', remaps.from_icon)\n  OR icon = CONCAT('far-', remaps.from_icon)\n  OR icon = CONCAT('fab-', remaps.from_icon)\n  OR icon = CONCAT('far fa-', remaps.from_icon)\n  OR icon = CONCAT('fab fa-', remaps.from_icon)\n  OR icon = CONCAT('fas fa-', remaps.from_icon);\n")
   -> 0.0303s
-- execute("UPDATE badges\nSET icon =\nCASE\n  WHEN icon LIKE 'fas fa-%' THEN SUBSTRING(icon FROM 8)\n  WHEN icon LIKE 'far fa-%' THEN CONCAT('far-', SUBSTRING(icon FROM 8))\n  WHEN icon LIKE 'fab fa-%' THEN CONCAT('fab-', SUBSTRING(icon FROM 8))\n  WHEN icon LIKE 'fa-%' THEN SUBSTRING(icon FROM 4)\n  ELSE icon\nEND\nWHERE icon LIKE 'fa-%'\n  OR icon LIKE 'far fa-%'\n  OR icon LIKE 'fab fa-%'\n  OR icon LIKE 'fas fa-%';\n")
   -> 0.0005s
-- execute("WITH remaps AS (\n  SELECT from_icon, to_icon FROM (VALUES ('adjust', 'circle-half-stroke'), ('air-freshener', 'spray-can-sparkles'), ('alien-monster', 'alien-8bit'), ('allergies', 'hand-dots'), ('ambulance', 'truck-medical'), ('american-sign-language-interpreting', 'hands-asl-interpreting'), ('analytics', 'chart-mixed'), ('angle-double-down', 'angles-down'), ('angle-double-left', 'angles-left'), ('angle-double-right', 'angles-right'), ('angle-double-up', 'angles-up'), ('angry', 'face-angry'), ('apple-alt', 'apple-whole'), ('apple-crate', 'crate-apple'), ('archive', 'box-archive'), ('arrow-alt-circle-down', 'circle-down'), ('arrow-alt-circle-left', 'circle-left'), ('arrow-alt-circle-right', 'circle-right'), ('arrow-alt-circle-up', 'circle-up'), ('arrow-alt-down', 'down'), ('arrow-alt-from-bottom', 'up-from-line'), ('arrow-alt-from-left', 'right-from-line'), ('arrow-alt-from-right', 'left-from-line'), ('arrow-alt-from-top', 'down-from-line'), ('arrow-alt-left', 'left'), ('arrow-alt-right', 'right'), ('arrow-alt-square-down', 'square-down'), ('arrow-alt-square-left', 'square-left'), ('arrow-alt-square-right', 'square-right'), ('arrow-alt-square-up', 'square-up'), ('arrow-alt-to-bottom', 'down-to-line'), ('arrow-alt-to-left', 'left-to-line'), ('arrow-alt-to-right', 'right-to-line'), ('arrow-alt-to-top', 'up-to-line'), ('arrow-alt-up', 'up'), ('arrow-circle-down', 'circle-arrow-down'), ('arrow-circle-left', 'circle-arrow-left'), ('arrow-circle-right', 'circle-arrow-right'), ('arrow-circle-up', 'circle-arrow-up'), ('arrow-from-bottom', 'arrow-up-from-line'), ('arrow-from-left', 'arrow-right-from-line'), ('arrow-from-right', 'arrow-left-from-line'), ('arrow-from-top', 'arrow-down-from-line'), ('arrow-square-down', 'square-arrow-down'), ('arrow-square-left', 'square-arrow-left'), ('arrow-square-right', 'square-arrow-right'), ('arrow-square-up', 'square-arrow-up'), ('arrow-to-bottom', 'arrow-down-to-line'), ('arrow-to-left', 'arrow-left-to-line'), ('arrow-to-right', 'arrow-right-to-line'), ('arrow-to-top', 'arrow-up-to-line'), ('arrows', 'arrows-up-down-left-right'), ('arrows-alt', 'up-down-left-right'), ('arrows-alt-h', 'left-right'), ('arrows-alt-v', 'up-down'), ('arrows-h', 'arrows-left-right'), ('arrows-v', 'arrows-up-down'), ('assistive-listening-systems', 'ear-listen'), ('atlas', 'book-atlas'), ('atom-alt', 'atom-simple'), ('backspace', 'delete-left'), ('balance-scale', 'scale-balanced'), ('balance-scale-left', 'scale-unbalanced'), ('balance-scale-right', 'scale-unbalanced-flip'), ('band-aid', 'bandage'), ('barcode-alt', 'rectangle-barcode'), ('baseball-ball', 'baseball'), ('basketball-ball', 'basketball'), ('bed-alt', 'bed-front'), ('beer', 'beer-mug-empty'), ('betamax', 'cassette-betamax'), ('bible', 'book-bible'), ('biking', 'person-biking'), ('biking-mountain', 'person-biking-mountain'), ('birthday-cake', 'cake-candles'), ('blind', 'person-walking-with-cane'), ('book-alt', 'book-blank'), ('book-dead', 'book-skull'), ('book-reader', 'book-open-reader'), ('book-spells', 'book-sparkles'), ('border-style', 'border-top-left'), ('border-style-alt', 'border-bottom-right'), ('box-alt', 'box-taped'), ('box-fragile', 'square-fragile'), ('box-full', 'box-open-full'), ('box-up', 'square-this-way-up'), ('box-usd', 'box-dollar'), ('boxes', 'boxes-stacked'), ('boxes-alt', 'boxes-stacked'), ('brackets', 'brackets-square'), ('broadcast-tower', 'tower-broadcast'), ('burn', 'fire-flame-simple'), ('bus-alt', 'bus-simple'), ('calculator-alt', 'calculator-simple'), ('calendar-alt', 'calendar-days'), ('calendar-edit', 'calendar-pen'), ('calendar-times', 'calendar-xmark'), ('camera-alt', 'camera'), ('camera-home', 'camera-security'), ('car-alt', 'car-rear'), ('car-crash', 'car-burst'), ('car-mechanic', 'car-wrench'), ('caravan-alt', 'caravan-simple'), ('caret-circle-down', 'circle-caret-down'), ('caret-circle-left', 'circle-caret-left'), ('caret-circle-right', 'circle-caret-right'), ('caret-circle-up', 'circle-caret-up'), ('caret-square-down', 'square-caret-down'), ('caret-square-left', 'square-caret-left'), ('caret-square-right', 'square-caret-right'), ('caret-square-up', 'square-caret-up'), ('cctv', 'camera-cctv'), ('chalkboard-teacher', 'chalkboard-user'), ('chart-pie-alt', 'chart-pie-simple'), ('check-circle', 'circle-check'), ('check-square', 'square-check'), ('cheeseburger', 'burger-cheese'), ('chess-bishop-alt', 'chess-bishop-piece'), ('chess-clock-alt', 'chess-clock-flip'), ('chess-king-alt', 'chess-king-piece'), ('chess-knight-alt', 'chess-knight-piece'), ('chess-pawn-alt', 'chess-pawn-piece'), ('chess-queen-alt', 'chess-queen-piece'), ('chess-rook-alt', 'chess-rook-piece'), ('chevron-circle-down', 'circle-chevron-down'), ('chevron-circle-left', 'circle-chevron-left'), ('chevron-circle-right', 'circle-chevron-right'), ('chevron-circle-up', 'circle-chevron-up'), ('chevron-double-down', 'chevrons-down'), ('chevron-double-left', 'chevrons-left'), ('chevron-double-right', 'chevrons-right'), ('chevron-double-up', 'chevrons-up'), ('chevron-square-down', 'square-chevron-down'), ('chevron-square-left', 'square-chevron-left'), ('chevron-square-right', 'square-chevron-right'), ('chevron-square-up', 'square-chevron-up'), ('clinic-medical', 'house-chimney-medical'), ('cloud-download', 'cloud-arrow-down'), ('cloud-download-alt', 'cloud-arrow-down'), ('cloud-upload', 'cloud-arrow-up'), ('cloud-upload-alt', 'cloud-arrow-up'), ('cocktail', 'martini-glass-citrus'), ('coffee', 'mug-saucer'), ('coffee-togo', 'cup-togo'), ('cog', 'gear'), ('cogs', 'gears'), ('columns', 'table-columns'), ('comment-alt', 'message'), ('comment-alt-check', 'message-check'), ('comment-alt-dollar', 'message-dollar'), ('comment-alt-dots', 'message-dots'), ('comment-alt-edit', 'message-pen'), ('comment-alt-exclamation', 'message-exclamation'), ('comment-alt-lines', 'message-lines'), ('comment-alt-medical', 'message-medical'), ('comment-alt-minus', 'message-minus'), ('comment-alt-music', 'message-music'), ('comment-alt-plus', 'message-plus'), ('comment-alt-slash', 'message-slash'), ('comment-alt-smile', 'message-smile'), ('comment-alt-times', 'message-xmark'), ('comment-edit', 'comment-pen'), ('comment-times', 'comment-xmark'), ('comments-alt', 'messages'), ('comments-alt-dollar', 'messages-dollar'), ('compress-alt', 'down-left-and-up-right-to-center'), ('compress-arrows-alt', 'minimize'), ('concierge-bell', 'bell-concierge'), ('construction', 'triangle-person-digging'), ('conveyor-belt-alt', 'conveyor-belt-boxes'), ('cowbell-more', 'cowbell-circle-plus'), ('cricket', 'cricket-bat-ball'), ('crop-alt', 'crop-simple'), ('curling', 'curling-stone'), ('cut', 'scissors'), ('deaf', 'ear-deaf'), ('debug', 'ban-bug'), ('desktop-alt', 'desktop'), ('dewpoint', 'droplet-degree'), ('diagnoses', 'person-dots-from-line'), ('digging', 'person-digging'), ('digital-tachograph', 'tachograph-digital'), ('directions', 'diamond-turn-right'), ('dizzy', 'face-dizzy'), ('dolly-flatbed', 'cart-flatbed'), ('dolly-flatbed-alt', 'cart-flatbed-boxes'), ('dolly-flatbed-empty', 'cart-flatbed-empty'), ('donate', 'circle-dollar-to-slot'), ('dot-circle', 'circle-dot'), ('drafting-compass', 'compass-drafting'), ('drone-alt', 'drone-front'), ('dryer-alt', 'dryer-heat'), ('eclipse-alt', 'moon-over-sun'), ('edit', 'pen-to-square'), ('ellipsis-h', 'ellipsis'), ('ellipsis-h-alt', 'ellipsis-stroke'), ('ellipsis-v', 'ellipsis-vertical'), ('ellipsis-v-alt', 'ellipsis-stroke-vertical'), ('envelope-square', 'square-envelope'), ('exchange', 'arrow-right-arrow-left'), ('exchange-alt', 'right-left'), ('exclamation-circle', 'circle-exclamation'), ('exclamation-square', 'square-exclamation'), ('exclamation-triangle', 'triangle-exclamation'), ('expand-alt', 'up-right-and-down-left-from-center'), ('expand-arrows', 'arrows-maximize'), ('expand-arrows-alt', 'maximize'), ('external-link', 'arrow-up-right-from-square'), ('external-link-alt', 'up-right-from-square'), ('external-link-square', 'square-arrow-up-right'), ('external-link-square-alt', 'square-up-right'), ('eyedropper', 'eye-dropper'), ('fast-backward', 'backward-fast'), ('fast-forward', 'forward-fast'), ('feather-alt', 'feather-pointed'), ('female', 'person-dress'), ('field-hockey', 'field-hockey-stick-ball'), ('fighter-jet', 'jet-fighter'), ('file-alt', 'file-lines'), ('file-archive', 'file-zipper'), ('file-chart-line', 'file-chart-column'), ('file-download', 'file-arrow-down'), ('file-edit', 'file-pen'), ('file-medical-alt', 'file-waveform'), ('file-search', 'file-magnifying-glass'), ('file-times', 'file-xmark'), ('file-upload', 'file-arrow-up'), ('film-alt', 'film-simple'), ('fire-alt', 'fire-flame-curved'), ('first-aid', 'kit-medical'), ('fist-raised', 'hand-fist'), ('flag-alt', 'flag-swallowtail'), ('flame', 'fire-flame'), ('flask-poison', 'flask-round-poison'), ('flask-potion', 'flask-round-potion'), ('flushed', 'face-flushed'), ('fog', 'cloud-fog'), ('folder-download', 'folder-arrow-down'), ('folder-times', 'folder-xmark'), ('folder-upload', 'folder-arrow-up'), ('font-awesome-alt', 'square-font-awesome-stroke'), ('font-awesome-flag', 'font-awesome'), ('font-awesome-logo-full', 'font-awesome'), ('football-ball', 'football'), ('fragile', 'wine-glass-crack'), ('frosty-head', 'snowman-head'), ('frown', 'face-frown'), ('frown-open', 'face-frown-open'), ('funnel-dollar', 'filter-circle-dollar'), ('game-board-alt', 'game-board-simple'), ('gamepad-alt', 'gamepad-modern'), ('glass-champagne', 'champagne-glass'), ('glass-cheers', 'champagne-glasses'), ('glass-martini', 'martini-glass-empty'), ('glass-martini-alt', 'martini-glass'), ('glass-whiskey', 'whiskey-glass'), ('glass-whiskey-rocks', 'whiskey-glass-ice'), ('glasses-alt', 'glasses-round'), ('globe-africa', 'earth-africa'), ('globe-americas', 'earth-americas'), ('globe-asia', 'earth-asia'), ('globe-europe', 'earth-europe'), ('golf-ball', 'golf-ball-tee'), ('grimace', 'face-grimace'), ('grin', 'face-grin'), ('grin-alt', 'face-grin-wide'), ('grin-beam', 'face-grin-beam'), ('grin-beam-sweat', 'face-grin-beam-sweat'), ('grin-hearts', 'face-grin-hearts'), ('grin-squint', 'face-grin-squint'), ('grin-squint-tears', 'face-grin-squint-tears'), ('grin-stars', 'face-grin-stars'), ('grin-tears', 'face-grin-tears'), ('grin-tongue', 'face-grin-tongue'), ('grin-tongue-squint', 'face-grin-tongue-squint'), ('grin-tongue-wink', 'face-grin-tongue-wink'), ('grin-wink', 'face-grin-wink'), ('grip-horizontal', 'grip'), ('h-square', 'square-h'), ('hamburger', 'burger'), ('hand-holding-usd', 'hand-holding-dollar'), ('hand-holding-water', 'hand-holding-droplet'), ('hand-paper', 'hand'), ('hand-receiving', 'hands-holding-diamond'), ('hand-rock', 'hand-back-fist'), ('hands-heart', 'hands-holding-heart'), ('hands-helping', 'handshake-angle'), ('hands-usd', 'hands-holding-dollar'), ('hands-wash', 'hands-bubbles'), ('handshake-alt', 'handshake-simple'), ('handshake-alt-slash', 'handshake-simple-slash'), ('hard-hat', 'helmet-safety'), ('hdd', 'hard-drive'), ('head-vr', 'head-side-goggles'), ('headphones-alt', 'headphones-simple'), ('heart-broken', 'heart-crack'), ('heart-circle', 'circle-heart'), ('heart-rate', 'wave-pulse'), ('heart-square', 'square-heart'), ('heartbeat', 'heart-pulse'), ('hiking', 'person-hiking'), ('history', 'clock-rotate-left'), ('home', 'house'), ('home-alt', 'house'), ('home-heart', 'house-heart'), ('home-lg', 'house-chimney'), ('home-lg-alt', 'house'), ('hospital-alt', 'hospital'), ('hospital-symbol', 'circle-h'), ('hot-tub', 'hot-tub-person'), ('hourglass-half', 'hourglass'), ('house-damage', 'house-chimney-crack'), ('house-leave', 'house-person-leave'), ('house-return', 'house-person-return'), ('hryvnia', 'hryvnia-sign'), ('humidity', 'droplet-percent'), ('icons-alt', 'symbols'), ('id-card-alt', 'id-card-clip'), ('industry-alt', 'industry-windows'), ('info-circle', 'circle-info'), ('info-square', 'square-info'), ('innosoft', '42-group'), ('inventory', 'shelves'), ('journal-whills', 'book-journal-whills'), ('kiss', 'face-kiss'), ('kiss-beam', 'face-kiss-beam'), ('kiss-wink-heart', 'face-kiss-wink-heart'), ('landmark-alt', 'landmark-dome'), ('laptop-house', 'house-laptop'), ('laugh', 'face-laugh'), ('laugh-beam', 'face-laugh-beam'), ('laugh-squint', 'face-laugh-squint'), ('laugh-wink', 'face-laugh-wink'), ('level-down', 'arrow-turn-down'), ('level-down-alt', 'turn-down'), ('level-up', 'arrow-turn-up'), ('level-up-alt', 'turn-up'), ('list-alt', 'rectangle-list'), ('location', 'location-crosshairs'), ('location-circle', 'circle-location-arrow'), ('location-slash', 'location-crosshairs-slash'), ('lock-alt', 'lock-keyhole'), ('lock-open-alt', 'lock-keyhole-open'), ('long-arrow-alt-down', 'down-long'), ('long-arrow-alt-left', 'left-long'), ('long-arrow-alt-right', 'right-long'), ('long-arrow-alt-up', 'up-long'), ('long-arrow-down', 'arrow-down-long'), ('long-arrow-left', 'arrow-left-long'), ('long-arrow-right', 'arrow-right-long'), ('long-arrow-up', 'arrow-up-long'), ('low-vision', 'eye-low-vision'), ('luchador', 'luchador-mask'), ('luggage-cart', 'cart-flatbed-suitcase'), ('magic', 'wand-magic'), ('mail-bulk', 'envelopes-bulk'), ('male', 'person'), ('map-marked', 'map-location'), ('map-marked-alt', 'map-location-dot'), ('map-marker', 'location-pin'), ('map-marker-alt', 'location-dot'), ('map-marker-alt-slash', 'location-dot-slash'), ('map-marker-check', 'location-check'), ('map-marker-edit', 'location-pen'), ('map-marker-exclamation', 'location-exclamation'), ('map-marker-minus', 'location-minus'), ('map-marker-plus', 'location-plus'), ('map-marker-question', 'location-question'), ('map-marker-slash', 'location-pin-slash'), ('map-marker-smile', 'location-smile'), ('map-marker-times', 'location-xmark'), ('map-signs', 'signs-post'), ('mars-stroke-h', 'mars-stroke-right'), ('mars-stroke-v', 'mars-stroke-up'), ('medium-m', 'medium'), ('medkit', 'suitcase-medical'), ('meh', 'face-meh'), ('meh-blank', 'face-meh-blank'), ('meh-rolling-eyes', 'face-rolling-eyes'), ('microphone-alt', 'microphone-lines'), ('microphone-alt-slash', 'microphone-lines-slash'), ('mind-share', 'brain-arrow-curved-right'), ('minus-circle', 'circle-minus'), ('minus-hexagon', 'hexagon-minus'), ('minus-octagon', 'octagon-minus'), ('minus-square', 'square-minus'), ('mobile-alt', 'mobile-screen-button'), ('mobile-android', 'mobile'), ('mobile-android-alt', 'mobile-screen'), ('money-bill-alt', 'money-bill-1'), ('money-bill-wave-alt', 'money-bill-1-wave'), ('money-check-alt', 'money-check-dollar'), ('money-check-edit', 'money-check-pen'), ('money-check-edit-alt', 'money-check-dollar-pen'), ('monitor-heart-rate', 'monitor-waveform'), ('mouse', 'computer-mouse'), ('mouse-alt', 'computer-mouse-scrollwheel'), ('mouse-pointer', 'arrow-pointer'), ('music-alt', 'music-note'), ('music-alt-slash', 'music-note-slash'), ('oil-temp', 'oil-temperature'), ('page-break', 'file-dashed-line'), ('paint-brush', 'paintbrush'), ('paint-brush-alt', 'paintbrush-fine'), ('paint-brush-fine', 'paintbrush-fine'), ('pallet-alt', 'pallet-boxes'), ('paragraph-rtl', 'paragraph-left'), ('parking', 'square-parking'), ('parking-circle', 'circle-parking'), ('parking-circle-slash', 'ban-parking'), ('parking-slash', 'square-parking-slash'), ('pastafarianism', 'spaghetti-monster-flying'), ('pause-circle', 'circle-pause'), ('paw-alt', 'paw-simple'), ('pen-alt', 'pen-clip'), ('pen-square', 'square-pen'), ('pencil-alt', 'pencil'), ('pencil-paintbrush', 'pen-paintbrush'), ('pencil-ruler', 'pen-ruler'), ('pennant', 'flag-pennant'), ('people-arrows', 'people-arrows-left-right'), ('people-carry', 'people-carry-box'), ('percentage', 'percent'), ('person-carry', 'person-carry-box'), ('phone-alt', 'phone-flip'), ('phone-laptop', 'laptop-mobile'), ('phone-square', 'square-phone'), ('phone-square-alt', 'square-phone-flip'), ('photo-video', 'photo-film'), ('plane-alt', 'plane-engines'), ('play-circle', 'circle-play'), ('plus-circle', 'circle-plus'), ('plus-hexagon', 'hexagon-plus'), ('plus-octagon', 'octagon-plus'), ('plus-square', 'square-plus'), ('poll', 'square-poll-vertical'), ('poll-h', 'square-poll-horizontal'), ('portal-enter', 'person-to-portal'), ('portal-exit', 'person-from-portal'), ('portrait', 'image-portrait'), ('pound-sign', 'sterling-sign'), ('pray', 'person-praying'), ('praying-hands', 'hands-praying'), ('prescription-bottle-alt', 'prescription-bottle-medical'), ('presentation', 'presentation-screen'), ('print-search', 'print-magnifying-glass'), ('procedures', 'bed-pulse'), ('project-diagram', 'diagram-project'), ('question-circle', 'circle-question'), ('question-square', 'square-question'), ('quran', 'book-quran'), ('rabbit-fast', 'rabbit-running'), ('radiation-alt', 'circle-radiation'), ('radio-alt', 'radio-tuner'), ('random', 'shuffle'), ('rectangle-landscape', 'rectangle'), ('rectangle-portrait', 'rectangle-vertical'), ('redo', 'arrow-rotate-right'), ('redo-alt', 'rotate-right'), ('remove-format', 'text-slash'), ('repeat-1-alt', 'arrows-repeat-1'), ('repeat-alt', 'arrows-repeat'), ('retweet-alt', 'arrows-retweet'), ('rss-square', 'square-rss'), ('running', 'person-running'), ('sad-cry', 'face-sad-cry'), ('sad-tear', 'face-sad-tear'), ('save', 'floppy-disk'), ('sax-hot', 'saxophone-fire'), ('scalpel-path', 'scalpel-line-dashed'), ('scanner-image', 'scanner'), ('search', 'magnifying-glass'), ('search-dollar', 'magnifying-glass-dollar'), ('search-location', 'magnifying-glass-location'), ('search-minus', 'magnifying-glass-minus'), ('search-plus', 'magnifying-glass-plus'), ('sensor-alert', 'sensor-triangle-exclamation'), ('sensor-smoke', 'sensor-cloud'), ('share-alt', 'share-nodes'), ('share-alt-square', 'square-share-nodes'), ('share-square', 'share-from-square'), ('shield-alt', 'shield-halved'), ('shipping-fast', 'truck-fast'), ('shipping-timed', 'truck-clock'), ('shopping-bag', 'bag-shopping'), ('shopping-basket', 'basket-shopping'), ('shopping-cart', 'cart-shopping'), ('shuttle-van', 'van-shuttle'), ('sign', 'sign-hanging'), ('sign-in', 'arrow-right-to-bracket'), ('sign-in-alt', 'right-to-bracket'), ('sign-language', 'hands'), ('sign-out', 'arrow-right-from-bracket'), ('sign-out-alt', 'right-from-bracket'), ('signal-1', 'signal-weak'), ('signal-2', 'signal-fair'), ('signal-3', 'signal-good'), ('signal-4', 'signal-strong'), ('signal-alt', 'signal-bars'), ('signal-alt-1', 'signal-bars-weak'), ('signal-alt-2', 'signal-bars-fair'), ('signal-alt-3', 'signal-bars-good'), ('signal-alt-slash', 'signal-bars-slash'), ('skating', 'person-skating'), ('ski-jump', 'person-ski-jumping'), ('ski-lift', 'person-ski-lift'), ('skiing', 'person-skiing'), ('skiing-nordic', 'person-skiing-nordic'), ('slack-hash', 'slack'), ('sledding', 'person-sledding'), ('sliders-h', 'sliders'), ('sliders-h-square', 'square-sliders'), ('sliders-v', 'sliders-up'), ('sliders-v-square', 'square-sliders-vertical'), ('smile', 'face-smile'), ('smile-beam', 'face-smile-beam'), ('smile-plus', 'face-smile-plus'), ('smile-wink', 'face-smile-wink'), ('smoking-ban', 'ban-smoking'), ('sms', 'comment-sms'), ('snapchat-ghost', 'snapchat'), ('snowboarding', 'person-snowboarding'), ('snowmobile', 'person-snowmobiling'), ('sort-alpha-down', 'arrow-down-a-z'), ('sort-alpha-down-alt', 'arrow-down-z-a'), ('sort-alpha-up', 'arrow-up-a-z'), ('sort-alpha-up-alt', 'arrow-up-z-a'), ('sort-alt', 'arrow-down-arrow-up'), ('sort-amount-down', 'arrow-down-wide-short'), ('sort-amount-down-alt', 'arrow-down-short-wide'), ('sort-amount-up', 'arrow-up-wide-short'), ('sort-amount-up-alt', 'arrow-up-short-wide'), ('sort-circle', 'circle-sort'), ('sort-circle-down', 'circle-sort-down'), ('sort-circle-up', 'circle-sort-up'), ('sort-numeric-down', 'arrow-down-1-9'), ('sort-numeric-down-alt', 'arrow-down-9-1'), ('sort-numeric-up', 'arrow-up-1-9'), ('sort-numeric-up-alt', 'arrow-up-9-1'), ('sort-shapes-down', 'arrow-down-triangle-square'), ('sort-shapes-down-alt', 'arrow-down-square-triangle'), ('sort-shapes-up', 'arrow-up-triangle-square'), ('sort-shapes-up-alt', 'arrow-up-square-triangle'), ('sort-size-down', 'arrow-down-big-small'), ('sort-size-down-alt', 'arrow-down-small-big'), ('sort-size-up', 'arrow-up-big-small'), ('sort-size-up-alt', 'arrow-up-small-big'), ('soup', 'bowl-hot'), ('space-shuttle', 'shuttle-space'), ('space-station-moon-alt', 'space-station-moon-construction'), ('square-root-alt', 'square-root-variable'), ('star-half-alt', 'star-half-stroke'), ('starfighter-alt', 'starfighter-twin-ion-engine'), ('step-backward', 'backward-step'), ('step-forward', 'forward-step'), ('sticky-note', 'note-sticky'), ('stop-circle', 'circle-stop'), ('store-alt', 'shop'), ('store-alt-slash', 'shop-slash'), ('stream', 'bars-staggered'), ('subway', 'train-subway'), ('surprise', 'face-surprise'), ('swimmer', 'person-swimming'), ('swimming-pool', 'water-ladder'), ('sync', 'arrows-rotate'), ('sync-alt', 'rotate'), ('table-tennis', 'table-tennis-paddle-ball'), ('tablet-alt', 'tablet-screen-button'), ('tablet-android', 'tablet'), ('tablet-android-alt', 'tablet-screen'), ('tachometer', 'gauge-simple'), ('tachometer-alt', 'gauge'), ('tachometer-alt-average', 'gauge-med'), ('tachometer-alt-fast', 'gauge'), ('tachometer-alt-fastest', 'gauge-max'), ('tachometer-alt-slow', 'gauge-low'), ('tachometer-alt-slowest', 'gauge-min'), ('tachometer-average', 'gauge-simple-med'), ('tachometer-fast', 'gauge-simple'), ('tachometer-fastest', 'gauge-simple-max'), ('tachometer-slow', 'gauge-simple-low'), ('tachometer-slowest', 'gauge-simple-min'), ('tanakh', 'book-tanakh'), ('tasks', 'list-check'), ('tasks-alt', 'bars-progress'), ('telegram-plane', 'telegram'), ('temperature-down', 'temperature-arrow-down'), ('temperature-frigid', 'temperature-snow'), ('temperature-hot', 'temperature-sun'), ('temperature-up', 'temperature-arrow-up'), ('tenge', 'tenge-sign'), ('th', 'table-cells'), ('th-large', 'table-cells-large'), ('th-list', 'table-list'), ('theater-masks', 'masks-theater'), ('thermometer-empty', 'temperature-empty'), ('thermometer-full', 'temperature-full'), ('thermometer-half', 'temperature-half'), ('thermometer-quarter', 'temperature-quarter'), ('thermometer-three-quarters', 'temperature-three-quarters'), ('thumb-tack', 'thumbtack'), ('thunderstorm', 'cloud-bolt'), ('thunderstorm-moon', 'cloud-bolt-moon'), ('thunderstorm-sun', 'cloud-bolt-sun'), ('ticket-alt', 'ticket-simple'), ('times', 'xmark'), ('times-circle', 'circle-xmark'), ('times-hexagon', 'hexagon-xmark'), ('times-octagon', 'octagon-xmark'), ('times-square', 'square-xmark'), ('tint', 'droplet'), ('tint-slash', 'droplet-slash'), ('tired', 'face-tired'), ('toilet-paper-alt', 'toilet-paper-blank'), ('tombstone-alt', 'tombstone-blank'), ('tools', 'screwdriver-wrench'), ('torah', 'scroll-torah'), ('tram', 'train-tram'), ('transgender-alt', 'transgender'), ('trash-alt', 'trash-can'), ('trash-restore', 'trash-arrow-up'), ('trash-restore-alt', 'trash-can-arrow-up'), ('trash-undo-alt', 'trash-can-undo'), ('tree-alt', 'tree-deciduous'), ('triangle-music', 'triangle-instrument'), ('trophy-alt', 'trophy-star'), ('truck-couch', 'truck-ramp-couch'), ('truck-loading', 'truck-ramp-box'), ('tshirt', 'shirt'), ('tv-alt', 'tv'), ('undo', 'arrow-rotate-left'), ('undo-alt', 'rotate-left'), ('university', 'building-columns'), ('unlink', 'link-slash'), ('unlock-alt', 'unlock-keyhole'), ('usd-circle', 'circle-dollar'), ('usd-square', 'square-dollar'), ('user-alt', 'user-large'), ('user-alt-slash', 'user-large-slash'), ('user-chart', 'chart-user'), ('user-circle', 'circle-user'), ('user-cog', 'user-gear'), ('user-edit', 'user-pen'), ('user-friends', 'user-group'), ('user-hard-hat', 'user-helmet-safety'), ('user-md', 'user-doctor'), ('user-md-chat', 'user-doctor-message'), ('user-times', 'user-xmark'), ('users-class', 'screen-users'), ('users-cog', 'users-gear'), ('users-crown', 'user-group-crown'), ('utensil-fork', 'fork'), ('utensil-knife', 'knife'), ('utensil-spoon', 'spoon'), ('utensils-alt', 'fork-knife'), ('vhs', 'cassette-vhs'), ('volleyball-ball', 'volleyball'), ('volume-down', 'volume-low'), ('volume-mute', 'volume-xmark'), ('volume-up', 'volume-high'), ('vote-nay', 'xmark-to-slot'), ('vote-yea', 'check-to-slot'), ('walking', 'person-walking'), ('warehouse-alt', 'warehouse-full'), ('washer', 'washing-machine'), ('water-lower', 'water-arrow-down'), ('water-rise', 'water-arrow-up'), ('waveform-path', 'waveform-lines'), ('webcam', 'camera-web'), ('webcam-slash', 'camera-web-slash'), ('weight', 'weight-scale'), ('wifi-1', 'wifi-weak'), ('wifi-2', 'wifi-fair'), ('window-alt', 'window-flip'), ('window-close', 'rectangle-xmark'), ('wine-glass-alt', 'wine-glass-empty')) AS mapping(from_icon, to_icon)\n)\nUPDATE sidebar_urls\nSET icon =\n  CASE\n    WHEN icon LIKE 'fab-%' THEN CONCAT('fab-', remaps.to_icon)\n    WHEN icon LIKE 'far-%' THEN CONCAT('far-', remaps.to_icon)\n    WHEN icon LIKE 'fab fa-%' THEN CONCAT('fab-', remaps.to_icon)\n    WHEN icon LIKE 'far fa-%' THEN CONCAT('far-', remaps.to_icon)\n    ELSE remaps.to_icon\n  END\nFROM remaps\nWHERE icon = remaps.from_icon\n  OR icon = CONCAT('fa-', remaps.from_icon)\n  OR icon = CONCAT('far-', remaps.from_icon)\n  OR icon = CONCAT('fab-', remaps.from_icon)\n  OR icon = CONCAT('far fa-', remaps.from_icon)\n  OR icon = CONCAT('fab fa-', remaps.from_icon)\n  OR icon = CONCAT('fas fa-', remaps.from_icon);\n")
   -> 0.0075s
-- execute("UPDATE sidebar_urls\nSET icon =\nCASE\n  WHEN icon LIKE 'fas fa-%' THEN SUBSTRING(icon FROM 8)\n  WHEN icon LIKE 'far fa-%' THEN CONCAT('far-', SUBSTRING(icon FROM 8))\n  WHEN icon LIKE 'fab fa-%' THEN CONCAT('fab-', SUBSTRING(icon FROM 8))\n  WHEN icon LIKE 'fa-%' THEN SUBSTRING(icon FROM 4)\n  ELSE icon\nEND\nWHERE icon LIKE 'fa-%'\n  OR icon LIKE 'far fa-%'\n  OR icon LIKE 'fab fa-%'\n  OR icon LIKE 'fas fa-%';\n")
   -> 0.0003s
-- execute("WITH remaps AS (\n  SELECT from_icon, to_icon FROM (VALUES ('adjust', 'circle-half-stroke'), ('air-freshener', 'spray-can-sparkles'), ('alien-monster', 'alien-8bit'), ('allergies', 'hand-dots'), ('ambulance', 'truck-medical'), ('american-sign-language-interpreting', 'hands-asl-interpreting'), ('analytics', 'chart-mixed'), ('angle-double-down', 'angles-down'), ('angle-double-left', 'angles-left'), ('angle-double-right', 'angles-right'), ('angle-double-up', 'angles-up'), ('angry', 'face-angry'), ('apple-alt', 'apple-whole'), ('apple-crate', 'crate-apple'), ('archive', 'box-archive'), ('arrow-alt-circle-down', 'circle-down'), ('arrow-alt-circle-left', 'circle-left'), ('arrow-alt-circle-right', 'circle-right'), ('arrow-alt-circle-up', 'circle-up'), ('arrow-alt-down', 'down'), ('arrow-alt-from-bottom', 'up-from-line'), ('arrow-alt-from-left', 'right-from-line'), ('arrow-alt-from-right', 'left-from-line'), ('arrow-alt-from-top', 'down-from-line'), ('arrow-alt-left', 'left'), ('arrow-alt-right', 'right'), ('arrow-alt-square-down', 'square-down'), ('arrow-alt-square-left', 'square-left'), ('arrow-alt-square-right', 'square-right'), ('arrow-alt-square-up', 'square-up'), ('arrow-alt-to-bottom', 'down-to-line'), ('arrow-alt-to-left', 'left-to-line'), ('arrow-alt-to-right', 'right-to-line'), ('arrow-alt-to-top', 'up-to-line'), ('arrow-alt-up', 'up'), ('arrow-circle-down', 'circle-arrow-down'), ('arrow-circle-left', 'circle-arrow-left'), ('arrow-circle-right', 'circle-arrow-right'), ('arrow-circle-up', 'circle-arrow-up'), ('arrow-from-bottom', 'arrow-up-from-line'), ('arrow-from-left', 'arrow-right-from-line'), ('arrow-from-right', 'arrow-left-from-line'), ('arrow-from-top', 'arrow-down-from-line'), ('arrow-square-down', 'square-arrow-down'), ('arrow-square-left', 'square-arrow-left'), ('arrow-square-right', 'square-arrow-right'), ('arrow-square-up', 'square-arrow-up'), ('arrow-to-bottom', 'arrow-down-to-line'), ('arrow-to-left', 'arrow-left-to-line'), ('arrow-to-right', 'arrow-right-to-line'), ('arrow-to-top', 'arrow-up-to-line'), ('arrows', 'arrows-up-down-left-right'), ('arrows-alt', 'up-down-left-right'), ('arrows-alt-h', 'left-right'), ('arrows-alt-v', 'up-down'), ('arrows-h', 'arrows-left-right'), ('arrows-v', 'arrows-up-down'), ('assistive-listening-systems', 'ear-listen'), ('atlas', 'book-atlas'), ('atom-alt', 'atom-simple'), ('backspace', 'delete-left'), ('balance-scale', 'scale-balanced'), ('balance-scale-left', 'scale-unbalanced'), ('balance-scale-right', 'scale-unbalanced-flip'), ('band-aid', 'bandage'), ('barcode-alt', 'rectangle-barcode'), ('baseball-ball', 'baseball'), ('basketball-ball', 'basketball'), ('bed-alt', 'bed-front'), ('beer', 'beer-mug-empty'), ('betamax', 'cassette-betamax'), ('bible', 'book-bible'), ('biking', 'person-biking'), ('biking-mountain', 'person-biking-mountain'), ('birthday-cake', 'cake-candles'), ('blind', 'person-walking-with-cane'), ('book-alt', 'book-blank'), ('book-dead', 'book-skull'), ('book-reader', 'book-open-reader'), ('book-spells', 'book-sparkles'), ('border-style', 'border-top-left'), ('border-style-alt', 'border-bottom-right'), ('box-alt', 'box-taped'), ('box-fragile', 'square-fragile'), ('box-full', 'box-open-full'), ('box-up', 'square-this-way-up'), ('box-usd', 'box-dollar'), ('boxes', 'boxes-stacked'), ('boxes-alt', 'boxes-stacked'), ('brackets', 'brackets-square'), ('broadcast-tower', 'tower-broadcast'), ('burn', 'fire-flame-simple'), ('bus-alt', 'bus-simple'), ('calculator-alt', 'calculator-simple'), ('calendar-alt', 'calendar-days'), ('calendar-edit', 'calendar-pen'), ('calendar-times', 'calendar-xmark'), ('camera-alt', 'camera'), ('camera-home', 'camera-security'), ('car-alt', 'car-rear'), ('car-crash', 'car-burst'), ('car-mechanic', 'car-wrench'), ('caravan-alt', 'caravan-simple'), ('caret-circle-down', 'circle-caret-down'), ('caret-circle-left', 'circle-caret-left'), ('caret-circle-right', 'circle-caret-right'), ('caret-circle-up', 'circle-caret-up'), ('caret-square-down', 'square-caret-down'), ('caret-square-left', 'square-caret-left'), ('caret-square-right', 'square-caret-right'), ('caret-square-up', 'square-caret-up'), ('cctv', 'camera-cctv'), ('chalkboard-teacher', 'chalkboard-user'), ('chart-pie-alt', 'chart-pie-simple'), ('check-circle', 'circle-check'), ('check-square', 'square-check'), ('cheeseburger', 'burger-cheese'), ('chess-bishop-alt', 'chess-bishop-piece'), ('chess-clock-alt', 'chess-clock-flip'), ('chess-king-alt', 'chess-king-piece'), ('chess-knight-alt', 'chess-knight-piece'), ('chess-pawn-alt', 'chess-pawn-piece'), ('chess-queen-alt', 'chess-queen-piece'), ('chess-rook-alt', 'chess-rook-piece'), ('chevron-circle-down', 'circle-chevron-down'), ('chevron-circle-left', 'circle-chevron-left'), ('chevron-circle-right', 'circle-chevron-right'), ('chevron-circle-up', 'circle-chevron-up'), ('chevron-double-down', 'chevrons-down'), ('chevron-double-left', 'chevrons-left'), ('chevron-double-right', 'chevrons-right'), ('chevron-double-up', 'chevrons-up'), ('chevron-square-down', 'square-chevron-down'), ('chevron-square-left', 'square-chevron-left'), ('chevron-square-right', 'square-chevron-right'), ('chevron-square-up', 'square-chevron-up'), ('clinic-medical', 'house-chimney-medical'), ('cloud-download', 'cloud-arrow-down'), ('cloud-download-alt', 'cloud-arrow-down'), ('cloud-upload', 'cloud-arrow-up'), ('cloud-upload-alt', 'cloud-arrow-up'), ('cocktail', 'martini-glass-citrus'), ('coffee', 'mug-saucer'), ('coffee-togo', 'cup-togo'), ('cog', 'gear'), ('cogs', 'gears'), ('columns', 'table-columns'), ('comment-alt', 'message'), ('comment-alt-check', 'message-check'), ('comment-alt-dollar', 'message-dollar'), ('comment-alt-dots', 'message-dots'), ('comment-alt-edit', 'message-pen'), ('comment-alt-exclamation', 'message-exclamation'), ('comment-alt-lines', 'message-lines'), ('comment-alt-medical', 'message-medical'), ('comment-alt-minus', 'message-minus'), ('comment-alt-music', 'message-music'), ('comment-alt-plus', 'message-plus'), ('comment-alt-slash', 'message-slash'), ('comment-alt-smile', 'message-smile'), ('comment-alt-times', 'message-xmark'), ('comment-edit', 'comment-pen'), ('comment-times', 'comment-xmark'), ('comments-alt', 'messages'), ('comments-alt-dollar', 'messages-dollar'), ('compress-alt', 'down-left-and-up-right-to-center'), ('compress-arrows-alt', 'minimize'), ('concierge-bell', 'bell-concierge'), ('construction', 'triangle-person-digging'), ('conveyor-belt-alt', 'conveyor-belt-boxes'), ('cowbell-more', 'cowbell-circle-plus'), ('cricket', 'cricket-bat-ball'), ('crop-alt', 'crop-simple'), ('curling', 'curling-stone'), ('cut', 'scissors'), ('deaf', 'ear-deaf'), ('debug', 'ban-bug'), ('desktop-alt', 'desktop'), ('dewpoint', 'droplet-degree'), ('diagnoses', 'person-dots-from-line'), ('digging', 'person-digging'), ('digital-tachograph', 'tachograph-digital'), ('directions', 'diamond-turn-right'), ('dizzy', 'face-dizzy'), ('dolly-flatbed', 'cart-flatbed'), ('dolly-flatbed-alt', 'cart-flatbed-boxes'), ('dolly-flatbed-empty', 'cart-flatbed-empty'), ('donate', 'circle-dollar-to-slot'), ('dot-circle', 'circle-dot'), ('drafting-compass', 'compass-drafting'), ('drone-alt', 'drone-front'), ('dryer-alt', 'dryer-heat'), ('eclipse-alt', 'moon-over-sun'), ('edit', 'pen-to-square'), ('ellipsis-h', 'ellipsis'), ('ellipsis-h-alt', 'ellipsis-stroke'), ('ellipsis-v', 'ellipsis-vertical'), ('ellipsis-v-alt', 'ellipsis-stroke-vertical'), ('envelope-square', 'square-envelope'), ('exchange', 'arrow-right-arrow-left'), ('exchange-alt', 'right-left'), ('exclamation-circle', 'circle-exclamation'), ('exclamation-square', 'square-exclamation'), ('exclamation-triangle', 'triangle-exclamation'), ('expand-alt', 'up-right-and-down-left-from-center'), ('expand-arrows', 'arrows-maximize'), ('expand-arrows-alt', 'maximize'), ('external-link', 'arrow-up-right-from-square'), ('external-link-alt', 'up-right-from-square'), ('external-link-square', 'square-arrow-up-right'), ('external-link-square-alt', 'square-up-right'), ('eyedropper', 'eye-dropper'), ('fast-backward', 'backward-fast'), ('fast-forward', 'forward-fast'), ('feather-alt', 'feather-pointed'), ('female', 'person-dress'), ('field-hockey', 'field-hockey-stick-ball'), ('fighter-jet', 'jet-fighter'), ('file-alt', 'file-lines'), ('file-archive', 'file-zipper'), ('file-chart-line', 'file-chart-column'), ('file-download', 'file-arrow-down'), ('file-edit', 'file-pen'), ('file-medical-alt', 'file-waveform'), ('file-search', 'file-magnifying-glass'), ('file-times', 'file-xmark'), ('file-upload', 'file-arrow-up'), ('film-alt', 'film-simple'), ('fire-alt', 'fire-flame-curved'), ('first-aid', 'kit-medical'), ('fist-raised', 'hand-fist'), ('flag-alt', 'flag-swallowtail'), ('flame', 'fire-flame'), ('flask-poison', 'flask-round-poison'), ('flask-potion', 'flask-round-potion'), ('flushed', 'face-flushed'), ('fog', 'cloud-fog'), ('folder-download', 'folder-arrow-down'), ('folder-times', 'folder-xmark'), ('folder-upload', 'folder-arrow-up'), ('font-awesome-alt', 'square-font-awesome-stroke'), ('font-awesome-flag', 'font-awesome'), ('font-awesome-logo-full', 'font-awesome'), ('football-ball', 'football'), ('fragile', 'wine-glass-crack'), ('frosty-head', 'snowman-head'), ('frown', 'face-frown'), ('frown-open', 'face-frown-open'), ('funnel-dollar', 'filter-circle-dollar'), ('game-board-alt', 'game-board-simple'), ('gamepad-alt', 'gamepad-modern'), ('glass-champagne', 'champagne-glass'), ('glass-cheers', 'champagne-glasses'), ('glass-martini', 'martini-glass-empty'), ('glass-martini-alt', 'martini-glass'), ('glass-whiskey', 'whiskey-glass'), ('glass-whiskey-rocks', 'whiskey-glass-ice'), ('glasses-alt', 'glasses-round'), ('globe-africa', 'earth-africa'), ('globe-americas', 'earth-americas'), ('globe-asia', 'earth-asia'), ('globe-europe', 'earth-europe'), ('golf-ball', 'golf-ball-tee'), ('grimace', 'face-grimace'), ('grin', 'face-grin'), ('grin-alt', 'face-grin-wide'), ('grin-beam', 'face-grin-beam'), ('grin-beam-sweat', 'face-grin-beam-sweat'), ('grin-hearts', 'face-grin-hearts'), ('grin-squint', 'face-grin-squint'), ('grin-squint-tears', 'face-grin-squint-tears'), ('grin-stars', 'face-grin-stars'), ('grin-tears', 'face-grin-tears'), ('grin-tongue', 'face-grin-tongue'), ('grin-tongue-squint', 'face-grin-tongue-squint'), ('grin-tongue-wink', 'face-grin-tongue-wink'), ('grin-wink', 'face-grin-wink'), ('grip-horizontal', 'grip'), ('h-square', 'square-h'), ('hamburger', 'burger'), ('hand-holding-usd', 'hand-holding-dollar'), ('hand-holding-water', 'hand-holding-droplet'), ('hand-paper', 'hand'), ('hand-receiving', 'hands-holding-diamond'), ('hand-rock', 'hand-back-fist'), ('hands-heart', 'hands-holding-heart'), ('hands-helping', 'handshake-angle'), ('hands-usd', 'hands-holding-dollar'), ('hands-wash', 'hands-bubbles'), ('handshake-alt', 'handshake-simple'), ('handshake-alt-slash', 'handshake-simple-slash'), ('hard-hat', 'helmet-safety'), ('hdd', 'hard-drive'), ('head-vr', 'head-side-goggles'), ('headphones-alt', 'headphones-simple'), ('heart-broken', 'heart-crack'), ('heart-circle', 'circle-heart'), ('heart-rate', 'wave-pulse'), ('heart-square', 'square-heart'), ('heartbeat', 'heart-pulse'), ('hiking', 'person-hiking'), ('history', 'clock-rotate-left'), ('home', 'house'), ('home-alt', 'house'), ('home-heart', 'house-heart'), ('home-lg', 'house-chimney'), ('home-lg-alt', 'house'), ('hospital-alt', 'hospital'), ('hospital-symbol', 'circle-h'), ('hot-tub', 'hot-tub-person'), ('hourglass-half', 'hourglass'), ('house-damage', 'house-chimney-crack'), ('house-leave', 'house-person-leave'), ('house-return', 'house-person-return'), ('hryvnia', 'hryvnia-sign'), ('humidity', 'droplet-percent'), ('icons-alt', 'symbols'), ('id-card-alt', 'id-card-clip'), ('industry-alt', 'industry-windows'), ('info-circle', 'circle-info'), ('info-square', 'square-info'), ('innosoft', '42-group'), ('inventory', 'shelves'), ('journal-whills', 'book-journal-whills'), ('kiss', 'face-kiss'), ('kiss-beam', 'face-kiss-beam'), ('kiss-wink-heart', 'face-kiss-wink-heart'), ('landmark-alt', 'landmark-dome'), ('laptop-house', 'house-laptop'), ('laugh', 'face-laugh'), ('laugh-beam', 'face-laugh-beam'), ('laugh-squint', 'face-laugh-squint'), ('laugh-wink', 'face-laugh-wink'), ('level-down', 'arrow-turn-down'), ('level-down-alt', 'turn-down'), ('level-up', 'arrow-turn-up'), ('level-up-alt', 'turn-up'), ('list-alt', 'rectangle-list'), ('location', 'location-crosshairs'), ('location-circle', 'circle-location-arrow'), ('location-slash', 'location-crosshairs-slash'), ('lock-alt', 'lock-keyhole'), ('lock-open-alt', 'lock-keyhole-open'), ('long-arrow-alt-down', 'down-long'), ('long-arrow-alt-left', 'left-long'), ('long-arrow-alt-right', 'right-long'), ('long-arrow-alt-up', 'up-long'), ('long-arrow-down', 'arrow-down-long'), ('long-arrow-left', 'arrow-left-long'), ('long-arrow-right', 'arrow-right-long'), ('long-arrow-up', 'arrow-up-long'), ('low-vision', 'eye-low-vision'), ('luchador', 'luchador-mask'), ('luggage-cart', 'cart-flatbed-suitcase'), ('magic', 'wand-magic'), ('mail-bulk', 'envelopes-bulk'), ('male', 'person'), ('map-marked', 'map-location'), ('map-marked-alt', 'map-location-dot'), ('map-marker', 'location-pin'), ('map-marker-alt', 'location-dot'), ('map-marker-alt-slash', 'location-dot-slash'), ('map-marker-check', 'location-check'), ('map-marker-edit', 'location-pen'), ('map-marker-exclamation', 'location-exclamation'), ('map-marker-minus', 'location-minus'), ('map-marker-plus', 'location-plus'), ('map-marker-question', 'location-question'), ('map-marker-slash', 'location-pin-slash'), ('map-marker-smile', 'location-smile'), ('map-marker-times', 'location-xmark'), ('map-signs', 'signs-post'), ('mars-stroke-h', 'mars-stroke-right'), ('mars-stroke-v', 'mars-stroke-up'), ('medium-m', 'medium'), ('medkit', 'suitcase-medical'), ('meh', 'face-meh'), ('meh-blank', 'face-meh-blank'), ('meh-rolling-eyes', 'face-rolling-eyes'), ('microphone-alt', 'microphone-lines'), ('microphone-alt-slash', 'microphone-lines-slash'), ('mind-share', 'brain-arrow-curved-right'), ('minus-circle', 'circle-minus'), ('minus-hexagon', 'hexagon-minus'), ('minus-octagon', 'octagon-minus'), ('minus-square', 'square-minus'), ('mobile-alt', 'mobile-screen-button'), ('mobile-android', 'mobile'), ('mobile-android-alt', 'mobile-screen'), ('money-bill-alt', 'money-bill-1'), ('money-bill-wave-alt', 'money-bill-1-wave'), ('money-check-alt', 'money-check-dollar'), ('money-check-edit', 'money-check-pen'), ('money-check-edit-alt', 'money-check-dollar-pen'), ('monitor-heart-rate', 'monitor-waveform'), ('mouse', 'computer-mouse'), ('mouse-alt', 'computer-mouse-scrollwheel'), ('mouse-pointer', 'arrow-pointer'), ('music-alt', 'music-note'), ('music-alt-slash', 'music-note-slash'), ('oil-temp', 'oil-temperature'), ('page-break', 'file-dashed-line'), ('paint-brush', 'paintbrush'), ('paint-brush-alt', 'paintbrush-fine'), ('paint-brush-fine', 'paintbrush-fine'), ('pallet-alt', 'pallet-boxes'), ('paragraph-rtl', 'paragraph-left'), ('parking', 'square-parking'), ('parking-circle', 'circle-parking'), ('parking-circle-slash', 'ban-parking'), ('parking-slash', 'square-parking-slash'), ('pastafarianism', 'spaghetti-monster-flying'), ('pause-circle', 'circle-pause'), ('paw-alt', 'paw-simple'), ('pen-alt', 'pen-clip'), ('pen-square', 'square-pen'), ('pencil-alt', 'pencil'), ('pencil-paintbrush', 'pen-paintbrush'), ('pencil-ruler', 'pen-ruler'), ('pennant', 'flag-pennant'), ('people-arrows', 'people-arrows-left-right'), ('people-carry', 'people-carry-box'), ('percentage', 'percent'), ('person-carry', 'person-carry-box'), ('phone-alt', 'phone-flip'), ('phone-laptop', 'laptop-mobile'), ('phone-square', 'square-phone'), ('phone-square-alt', 'square-phone-flip'), ('photo-video', 'photo-film'), ('plane-alt', 'plane-engines'), ('play-circle', 'circle-play'), ('plus-circle', 'circle-plus'), ('plus-hexagon', 'hexagon-plus'), ('plus-octagon', 'octagon-plus'), ('plus-square', 'square-plus'), ('poll', 'square-poll-vertical'), ('poll-h', 'square-poll-horizontal'), ('portal-enter', 'person-to-portal'), ('portal-exit', 'person-from-portal'), ('portrait', 'image-portrait'), ('pound-sign', 'sterling-sign'), ('pray', 'person-praying'), ('praying-hands', 'hands-praying'), ('prescription-bottle-alt', 'prescription-bottle-medical'), ('presentation', 'presentation-screen'), ('print-search', 'print-magnifying-glass'), ('procedures', 'bed-pulse'), ('project-diagram', 'diagram-project'), ('question-circle', 'circle-question'), ('question-square', 'square-question'), ('quran', 'book-quran'), ('rabbit-fast', 'rabbit-running'), ('radiation-alt', 'circle-radiation'), ('radio-alt', 'radio-tuner'), ('random', 'shuffle'), ('rectangle-landscape', 'rectangle'), ('rectangle-portrait', 'rectangle-vertical'), ('redo', 'arrow-rotate-right'), ('redo-alt', 'rotate-right'), ('remove-format', 'text-slash'), ('repeat-1-alt', 'arrows-repeat-1'), ('repeat-alt', 'arrows-repeat'), ('retweet-alt', 'arrows-retweet'), ('rss-square', 'square-rss'), ('running', 'person-running'), ('sad-cry', 'face-sad-cry'), ('sad-tear', 'face-sad-tear'), ('save', 'floppy-disk'), ('sax-hot', 'saxophone-fire'), ('scalpel-path', 'scalpel-line-dashed'), ('scanner-image', 'scanner'), ('search', 'magnifying-glass'), ('search-dollar', 'magnifying-glass-dollar'), ('search-location', 'magnifying-glass-location'), ('search-minus', 'magnifying-glass-minus'), ('search-plus', 'magnifying-glass-plus'), ('sensor-alert', 'sensor-triangle-exclamation'), ('sensor-smoke', 'sensor-cloud'), ('share-alt', 'share-nodes'), ('share-alt-square', 'square-share-nodes'), ('share-square', 'share-from-square'), ('shield-alt', 'shield-halved'), ('shipping-fast', 'truck-fast'), ('shipping-timed', 'truck-clock'), ('shopping-bag', 'bag-shopping'), ('shopping-basket', 'basket-shopping'), ('shopping-cart', 'cart-shopping'), ('shuttle-van', 'van-shuttle'), ('sign', 'sign-hanging'), ('sign-in', 'arrow-right-to-bracket'), ('sign-in-alt', 'right-to-bracket'), ('sign-language', 'hands'), ('sign-out', 'arrow-right-from-bracket'), ('sign-out-alt', 'right-from-bracket'), ('signal-1', 'signal-weak'), ('signal-2', 'signal-fair'), ('signal-3', 'signal-good'), ('signal-4', 'signal-strong'), ('signal-alt', 'signal-bars'), ('signal-alt-1', 'signal-bars-weak'), ('signal-alt-2', 'signal-bars-fair'), ('signal-alt-3', 'signal-bars-good'), ('signal-alt-slash', 'signal-bars-slash'), ('skating', 'person-skating'), ('ski-jump', 'person-ski-jumping'), ('ski-lift', 'person-ski-lift'), ('skiing', 'person-skiing'), ('skiing-nordic', 'person-skiing-nordic'), ('slack-hash', 'slack'), ('sledding', 'person-sledding'), ('sliders-h', 'sliders'), ('sliders-h-square', 'square-sliders'), ('sliders-v', 'sliders-up'), ('sliders-v-square', 'square-sliders-vertical'), ('smile', 'face-smile'), ('smile-beam', 'face-smile-beam'), ('smile-plus', 'face-smile-plus'), ('smile-wink', 'face-smile-wink'), ('smoking-ban', 'ban-smoking'), ('sms', 'comment-sms'), ('snapchat-ghost', 'snapchat'), ('snowboarding', 'person-snowboarding'), ('snowmobile', 'person-snowmobiling'), ('sort-alpha-down', 'arrow-down-a-z'), ('sort-alpha-down-alt', 'arrow-down-z-a'), ('sort-alpha-up', 'arrow-up-a-z'), ('sort-alpha-up-alt', 'arrow-up-z-a'), ('sort-alt', 'arrow-down-arrow-up'), ('sort-amount-down', 'arrow-down-wide-short'), ('sort-amount-down-alt', 'arrow-down-short-wide'), ('sort-amount-up', 'arrow-up-wide-short'), ('sort-amount-up-alt', 'arrow-up-short-wide'), ('sort-circle', 'circle-sort'), ('sort-circle-down', 'circle-sort-down'), ('sort-circle-up', 'circle-sort-up'), ('sort-numeric-down', 'arrow-down-1-9'), ('sort-numeric-down-alt', 'arrow-down-9-1'), ('sort-numeric-up', 'arrow-up-1-9'), ('sort-numeric-up-alt', 'arrow-up-9-1'), ('sort-shapes-down', 'arrow-down-triangle-square'), ('sort-shapes-down-alt', 'arrow-down-square-triangle'), ('sort-shapes-up', 'arrow-up-triangle-square'), ('sort-shapes-up-alt', 'arrow-up-square-triangle'), ('sort-size-down', 'arrow-down-big-small'), ('sort-size-down-alt', 'arrow-down-small-big'), ('sort-size-up', 'arrow-up-big-small'), ('sort-size-up-alt', 'arrow-up-small-big'), ('soup', 'bowl-hot'), ('space-shuttle', 'shuttle-space'), ('space-station-moon-alt', 'space-station-moon-construction'), ('square-root-alt', 'square-root-variable'), ('star-half-alt', 'star-half-stroke'), ('starfighter-alt', 'starfighter-twin-ion-engine'), ('step-backward', 'backward-step'), ('step-forward', 'forward-step'), ('sticky-note', 'note-sticky'), ('stop-circle', 'circle-stop'), ('store-alt', 'shop'), ('store-alt-slash', 'shop-slash'), ('stream', 'bars-staggered'), ('subway', 'train-subway'), ('surprise', 'face-surprise'), ('swimmer', 'person-swimming'), ('swimming-pool', 'water-ladder'), ('sync', 'arrows-rotate'), ('sync-alt', 'rotate'), ('table-tennis', 'table-tennis-paddle-ball'), ('tablet-alt', 'tablet-screen-button'), ('tablet-android', 'tablet'), ('tablet-android-alt', 'tablet-screen'), ('tachometer', 'gauge-simple'), ('tachometer-alt', 'gauge'), ('tachometer-alt-average', 'gauge-med'), ('tachometer-alt-fast', 'gauge'), ('tachometer-alt-fastest', 'gauge-max'), ('tachometer-alt-slow', 'gauge-low'), ('tachometer-alt-slowest', 'gauge-min'), ('tachometer-average', 'gauge-simple-med'), ('tachometer-fast', 'gauge-simple'), ('tachometer-fastest', 'gauge-simple-max'), ('tachometer-slow', 'gauge-simple-low'), ('tachometer-slowest', 'gauge-simple-min'), ('tanakh', 'book-tanakh'), ('tasks', 'list-check'), ('tasks-alt', 'bars-progress'), ('telegram-plane', 'telegram'), ('temperature-down', 'temperature-arrow-down'), ('temperature-frigid', 'temperature-snow'), ('temperature-hot', 'temperature-sun'), ('temperature-up', 'temperature-arrow-up'), ('tenge', 'tenge-sign'), ('th', 'table-cells'), ('th-large', 'table-cells-large'), ('th-list', 'table-list'), ('theater-masks', 'masks-theater'), ('thermometer-empty', 'temperature-empty'), ('thermometer-full', 'temperature-full'), ('thermometer-half', 'temperature-half'), ('thermometer-quarter', 'temperature-quarter'), ('thermometer-three-quarters', 'temperature-three-quarters'), ('thumb-tack', 'thumbtack'), ('thunderstorm', 'cloud-bolt'), ('thunderstorm-moon', 'cloud-bolt-moon'), ('thunderstorm-sun', 'cloud-bolt-sun'), ('ticket-alt', 'ticket-simple'), ('times', 'xmark'), ('times-circle', 'circle-xmark'), ('times-hexagon', 'hexagon-xmark'), ('times-octagon', 'octagon-xmark'), ('times-square', 'square-xmark'), ('tint', 'droplet'), ('tint-slash', 'droplet-slash'), ('tired', 'face-tired'), ('toilet-paper-alt', 'toilet-paper-blank'), ('tombstone-alt', 'tombstone-blank'), ('tools', 'screwdriver-wrench'), ('torah', 'scroll-torah'), ('tram', 'train-tram'), ('transgender-alt', 'transgender'), ('trash-alt', 'trash-can'), ('trash-restore', 'trash-arrow-up'), ('trash-restore-alt', 'trash-can-arrow-up'), ('trash-undo-alt', 'trash-can-undo'), ('tree-alt', 'tree-deciduous'), ('triangle-music', 'triangle-instrument'), ('trophy-alt', 'trophy-star'), ('truck-couch', 'truck-ramp-couch'), ('truck-loading', 'truck-ramp-box'), ('tshirt', 'shirt'), ('tv-alt', 'tv'), ('undo', 'arrow-rotate-left'), ('undo-alt', 'rotate-left'), ('university', 'building-columns'), ('unlink', 'link-slash'), ('unlock-alt', 'unlock-keyhole'), ('usd-circle', 'circle-dollar'), ('usd-square', 'square-dollar'), ('user-alt', 'user-large'), ('user-alt-slash', 'user-large-slash'), ('user-chart', 'chart-user'), ('user-circle', 'circle-user'), ('user-cog', 'user-gear'), ('user-edit', 'user-pen'), ('user-friends', 'user-group'), ('user-hard-hat', 'user-helmet-safety'), ('user-md', 'user-doctor'), ('user-md-chat', 'user-doctor-message'), ('user-times', 'user-xmark'), ('users-class', 'screen-users'), ('users-cog', 'users-gear'), ('users-crown', 'user-group-crown'), ('utensil-fork', 'fork'), ('utensil-knife', 'knife'), ('utensil-spoon', 'spoon'), ('utensils-alt', 'fork-knife'), ('vhs', 'cassette-vhs'), ('volleyball-ball', 'volleyball'), ('volume-down', 'volume-low'), ('volume-mute', 'volume-xmark'), ('volume-up', 'volume-high'), ('vote-nay', 'xmark-to-slot'), ('vote-yea', 'check-to-slot'), ('walking', 'person-walking'), ('warehouse-alt', 'warehouse-full'), ('washer', 'washing-machine'), ('water-lower', 'water-arrow-down'), ('water-rise', 'water-arrow-up'), ('waveform-path', 'waveform-lines'), ('webcam', 'camera-web'), ('webcam-slash', 'camera-web-slash'), ('weight', 'weight-scale'), ('wifi-1', 'wifi-weak'), ('wifi-2', 'wifi-fair'), ('window-alt', 'window-flip'), ('window-close', 'rectangle-xmark'), ('wine-glass-alt', 'wine-glass-empty')) AS mapping(from_icon, to_icon)\n)\nUPDATE directory_columns\nSET icon =\n  CASE\n    WHEN icon LIKE 'fab-%' THEN CONCAT('fab-', remaps.to_icon)\n    WHEN icon LIKE 'far-%' THEN CONCAT('far-', remaps.to_icon)\n    WHEN icon LIKE 'fab fa-%' THEN CONCAT('fab-', remaps.to_icon)\n    WHEN icon LIKE 'far fa-%' THEN CONCAT('far-', remaps.to_icon)\n    ELSE remaps.to_icon\n  END\nFROM remaps\nWHERE icon = remaps.from_icon\n  OR icon = CONCAT('fa-', remaps.from_icon)\n  OR icon = CONCAT('far-', remaps.from_icon)\n  OR icon = CONCAT('fab-', remaps.from_icon)\n  OR icon = CONCAT('far fa-', remaps.from_icon)\n  OR icon = CONCAT('fab fa-', remaps.from_icon)\n  OR icon = CONCAT('fas fa-', remaps.from_icon);\n")
   -> 0.0055s
-- execute("UPDATE directory_columns\nSET icon =\nCASE\n  WHEN icon LIKE 'fas fa-%' THEN SUBSTRING(icon FROM 8)\n  WHEN icon LIKE 'far fa-%' THEN CONCAT('far-', SUBSTRING(icon FROM 8))\n  WHEN icon LIKE 'fab fa-%' THEN CONCAT('fab-', SUBSTRING(icon FROM 8))\n  WHEN icon LIKE 'fa-%' THEN SUBSTRING(icon FROM 4)\n  ELSE icon\nEND\nWHERE icon LIKE 'fa-%'\n  OR icon LIKE 'far fa-%'\n  OR icon LIKE 'fab fa-%'\n  OR icon LIKE 'fas fa-%';\n")
   -> 0.0003s
== 20241204085540 RemapToFa6IconNames: migrated (0.0600s) =====================

== 20241205035402 ChangeDefaultForBadgesIcon: migrating =======================
-- change_column_default(:badges, :icon, {:from=>"fa-certificate", :to=>"certificate"})
   -> 0.0023s
-- execute("UPDATE badges\nSET icon = 'certificate'\nWHERE icon = 'fa-certificate';\n")
   -> 0.0003s
== 20241205035402 ChangeDefaultForBadgesIcon: migrated (0.0032s) ==============

== 20241205162117 AddColumnsToMovedPosts: migrating ===========================
-- add_column(:moved_posts, :old_topic_title, :string)
   -> 0.0010s
-- add_column(:moved_posts, :post_user_id, :integer)
   -> 0.0003s
-- add_column(:moved_posts, :user_id, :integer)
   -> 0.0002s
-- add_index(:moved_posts, [:new_topic_id, :post_user_id])
   -> 0.0031s
== 20241205162117 AddColumnsToMovedPosts: migrated (0.0052s) ==================

== 20241206002425 DropExperimentalTopicsFilterSiteSetting: migrating ==========
-- execute("DELETE FROM site_settings\nWHERE name = 'experimental_topics_filter'\n")
   -> 0.0002s
== 20241206002425 DropExperimentalTopicsFilterSiteSetting: migrated (0.0006s) =

== 20241206121401 DeleteCategoriesOnlyOptimizedSiteSetting: migrating =========
-- execute("DELETE FROM site_settings WHERE name = 'desktop_category_page_style' AND value = 'categories_only_optimized'")
   -> 0.0002s
== 20241206121401 DeleteCategoriesOnlyOptimizedSiteSetting: migrated (0.0005s) 

== 20241211030039 RemoveGlimmerPostMenuGroupsSetting: migrating ===============
-- execute("DELETE FROM site_settings\nWHERE name = 'glimmer_post_menu_groups'\n")
   -> 0.0002s
== 20241211030039 RemoveGlimmerPostMenuGroupsSetting: migrated (0.0005s) ======

== 20241211222608 AddFullMoveToMovedPostRecords: migrating ====================
-- add_column(:moved_posts, :full_move, :boolean)
   -> 0.0003s
== 20241211222608 AddFullMoveToMovedPostRecords: migrated (0.0007s) ===========

== 20241224191732 ChangeFullNameRequiredSetting: migrating ====================
== 20241224191732 ChangeFullNameRequiredSetting: migrated (0.0012s) ===========

== 20241226162229 AddChatSendShortcutPreference: migrating ====================
-- add_column(:user_options, :chat_send_shortcut, :integer, {:default=>0, :null=>false})
   -> 0.0007s
== 20241226162229 AddChatSendShortcutPreference: migrated (0.0011s) ===========

== 20250115031117 RemoveUserProfileFromOverriddenRobots: migrating ============
-- select_value("SELECT value FROM site_settings WHERE name = 'overridden_robots_txt' AND value LIKE '%User-agent: *\nDisallow: /admin/\nDisallow: /auth/\nDisallow: /assets/browser-update*.js\nDisallow: /email/\nDisallow: /session\nDisallow: /user-api-key\nDisallow: /*?api_key*\nDisallow: /*?*api_key*\nDisallow: /badges\nDisallow: /u/%'")
   -> 0.0002s
== 20250115031117 RemoveUserProfileFromOverriddenRobots: migrated (0.0006s) ===

== 20250116024516 UpdateFontSiteSettingsType: migrating =======================
-- execute("UPDATE site_settings SET data_type=8 WHERE name IN('base_font', 'heading_font')")
   -> 0.0002s
== 20250116024516 UpdateFontSiteSettingsType: migrated (0.0005s) ==============

== 20250117065027 SetDefaultFontForExistingSites: migrating ===================
-- execute("INSERT INTO site_settings(name, data_type, value, created_at, updated_at)\nVALUES('base_font', 8, 'arial', NOW(), NOW())\nON CONFLICT (name) DO NOTHING\n")
   -> 0.0002s
-- execute("INSERT INTO site_settings(name, data_type, value, created_at, updated_at)\nVALUES('heading_font', 8, 'arial', NOW(), NOW())\nON CONFLICT (name) DO NOTHING\n")
   -> 0.0002s
== 20250117065027 SetDefaultFontForExistingSites: migrated (0.0029s) ==========

== 20250119222805 FillFastTypingThresholdBasedOnDeprecatedSetting: migrating ==
== 20250119222805 FillFastTypingThresholdBasedOnDeprecatedSetting: migrated (0.0005s) 

== 20250120115539 AddDarkHexToColorSchemeColor: migrating =====================
-- add_column(:color_scheme_colors, :dark_hex, :string, {:limit=>6})
   -> 0.0004s
== 20250120115539 AddDarkHexToColorSchemeColor: migrated (0.0007s) ============

== 20250121180125 CreateThemeColorScheme: migrating ===========================
-- create_table(:theme_color_schemes)
   -> 0.0039s
-- add_index(:theme_color_schemes, :theme_id, {:unique=>true})
   -> 0.0027s
-- add_index(:theme_color_schemes, :color_scheme_id, {:unique=>true})
   -> 0.0029s
== 20250121180125 CreateThemeColorScheme: migrated (0.0100s) ==================

== 20250124062108 RemapDeprecatedIconNamesForSeededBadges: migrating ==========
-- execute("WITH remaps AS (\n  SELECT from_icon, to_icon\n  FROM (VALUES ('smile', 'face-smile'), ('share-alt', 'share-nodes'))\n  AS mapping(from_icon, to_icon)\n)\nUPDATE badges\nSET icon = remaps.to_icon\nFROM remaps\nWHERE icon = remaps.from_icon;\n")
   -> 0.0005s
== 20250124062108 RemapDeprecatedIconNamesForSeededBadges: migrated (0.0009s) =

== 20250130205841 FixIncorrectFastTypingThresholdSetting: migrating ===========
-- execute("UPDATE site_settings SET value = 'disabled' WHERE name = 'fast_typing_threshold' AND value = 'off'")
   -> 0.0002s
== 20250130205841 FixIncorrectFastTypingThresholdSetting: migrated (0.0005s) ==

== 20250205174221 AddSerializeTopicOpLikesDataThemeModifier: migrating ========
-- add_column(:theme_modifier_sets, :serialize_topic_op_likes_data, :boolean, {:null=>true})
   -> 0.0004s
== 20250205174221 AddSerializeTopicOpLikesDataThemeModifier: migrated (0.0007s) 

== 20250212044021 RenameAllowAllUsersToFlagIllegalContentSiteSetting: migrating 
-- execute("UPDATE site_settings SET name = 'allow_all_users_to_flag_illegal_content' where name = 'allow_tl0_and_anonymous_users_to_flag_illegal_content'")
   -> 0.0002s
== 20250212044021 RenameAllowAllUsersToFlagIllegalContentSiteSetting: migrated (0.0005s) 

== 20250212045125 AddTypeSourceToReviewable: migrating ========================
-- add_column(:reviewables, :type_source, :string, {:null=>false, :default=>"unknown"})
   -> 0.0006s
== 20250212045125 AddTypeSourceToReviewable: migrated (0.0023s) ===============

== 20250217003916 XSummaryLargeImageBasedOnDeprecatedSetting: migrating =======
== 20250217003916 XSummaryLargeImageBasedOnDeprecatedSetting: migrated (0.0007s) 

== 20250220045740 AddContextToReviewableScores: migrating =====================
-- add_column(:reviewable_scores, :context, :string)
   -> 0.0004s
== 20250220045740 AddContextToReviewableScores: migrated (0.0007s) ============

== 20250220090521 AddLastUnreadMessageWhenEmailedIdToChatThreadMemberships: migrating 
-- add_column(:user_chat_thread_memberships, :last_unread_message_when_emailed_id, :bigint)
   -> 0.0003s
== 20250220090521 AddLastUnreadMessageWhenEmailedIdToChatThreadMemberships: migrated (0.0006s) 

== 20250227142351 MigrateSidekiqJobs: migrating ===============================
== 20250227142351 MigrateSidekiqJobs: migrated (0.0025s) ======================

== 20250304034313 AddComposerColumnsToPostStat: migrating =====================
-- add_column(:post_stats, :composer_version, :integer)
   -> 0.0004s
-- add_column(:post_stats, :writing_device, :string)
   -> 0.0032s
-- add_column(:post_stats, :writing_device_user_agent, :string)
   -> 0.0003s
== 20250304034313 AddComposerColumnsToPostStat: migrated (0.0044s) ============

== 20250304054720 AddScopeModeToApiKeys: migrating ============================
-- add_column(:api_keys, :scope_mode, :integer, {:null=>true})
   -> 0.0004s
== 20250304054720 AddScopeModeToApiKeys: migrated (0.0007s) ===================

== 20250304074934 BackfillApiKeyScopeModes: migrating =========================
== 20250304074934 BackfillApiKeyScopeModes: migrated (0.0010s) ================

== 20250305233449 PopulateTypeSourceInReviewable: migrating ===================
== 20250305233449 PopulateTypeSourceInReviewable: migrated (0.0020s) ==========

== 20250307031538 MigrateCategoryToCategoriesPostCreated: migrating ===========
-- execute("DELETE FROM discourse_automation_fields\nWHERE name = 'restricted_categories'\n  AND target = 'trigger'\n  AND automation_id IN (\n    SELECT id FROM discourse_automation_automations\n    WHERE trigger = 'post_created_edited'\n  )\n")
   -> 0.0004s
-- execute("INSERT INTO discourse_automation_fields (\n  automation_id, component, name, target, metadata, created_at, updated_at\n)\nSELECT\n  f.automation_id,\n  'categories' as component,\n  'restricted_categories' as name,\n  f.target,\n  jsonb_build_object('value', ARRAY[CAST(f.metadata->>'value' AS INTEGER)]) as metadata,\n  NOW() as created_at,\n  NOW() as updated_at\nFROM discourse_automation_fields f\nJOIN discourse_automation_automations a ON a.id = f.automation_id\nWHERE f.component = 'category'\nAND f.name = 'restricted_category'\nAND f.target = 'trigger'\nAND f.metadata->>'value' IS NOT NULL\nAND a.trigger = 'post_created_edited'\n")
   -> 0.0003s
== 20250307031538 MigrateCategoryToCategoriesPostCreated: migrated (0.0011s) ==

== 20250307034117 RemoveOldAdminSidebarEnabledGroupsSiteSettings: migrating ===
-- execute("DELETE FROM site_settings WHERE name = 'admin_sidebar_enabled_groups'")
   -> 0.0002s
== 20250307034117 RemoveOldAdminSidebarEnabledGroupsSiteSettings: migrated (0.0006s) 

== 20250311041851 AddIndexToPostStatComposerColumns: migrating ================
-- remove_index(:post_stats, :composer_version, {:algorithm=>:concurrently, :if_exists=>true})
   -> 0.0014s
-- remove_index(:post_stats, :writing_device, {:algorithm=>:concurrently, :if_exists=>true})
   -> 0.0011s
-- add_index(:post_stats, :composer_version, {:algorithm=>:concurrently})
   -> 0.0032s
-- add_index(:post_stats, :writing_device, {:algorithm=>:concurrently})
   -> 0.0028s
== 20250311041851 AddIndexToPostStatComposerColumns: migrated (0.0091s) =======

== 20250311073009 EnableWelcomeBannerNewSites: migrating ======================
-- execute("INSERT INTO site_settings(name, data_type, value, created_at, updated_at)\nVALUES('enable_welcome_banner', 5, 'f', NOW(), NOW())\nON CONFLICT (name) DO NOTHING\n")
   -> 0.0003s
== 20250311073009 EnableWelcomeBannerNewSites: migrated (0.0012s) =============

== 20250313044812 RemoveUniqueConstraintFromTagUsersIndexes: migrating ========
-- remove_index(:tag_users, {:name=>:idx_tag_users_ix1, :algorithm=>:concurrently, :if_exists=>true})
   -> 0.0079s
-- remove_index(:tag_users, {:name=>:idx_tag_users_ix2, :algorithm=>:concurrently, :if_exists=>true})
   -> 0.0074s
-- remove_index(:tag_users, [:user_id, :tag_id, :notification_level], {:algorithm=>:concurrently, :if_exists=>true})
   -> 0.0014s
-- remove_index(:tag_users, [:tag_id, :user_id, :notification_level], {:algorithm=>:concurrently, :if_exists=>true})
   -> 0.0011s
-- add_index(:tag_users, [:user_id, :tag_id, :notification_level], {:algorithm=>:concurrently})
   -> 0.0028s
-- add_index(:tag_users, [:tag_id, :user_id, :notification_level], {:algorithm=>:concurrently})
   -> 0.0028s
== 20250313044812 RemoveUniqueConstraintFromTagUsersIndexes: migrated (0.0242s) 

== 20250313045010 AddIndexToUsersIpAddress: migrating =========================
-- remove_index(:users, :ip_address, {:algorithm=>:concurrently, :name=>"idx_users_ip_address", :if_exists=>true})
   -> 0.0032s
-- add_index(:users, :ip_address, {:algorithm=>:concurrently, :name=>"idx_users_ip_address"})
   -> 0.0034s
== 20250313045010 AddIndexToUsersIpAddress: migrated (0.0073s) ================


[2025-03-19 02:09:40] Reconnecting to the database...
[2025-03-19 02:09:40] Reloading site settings...
[2025-03-19 02:09:40] Disabling outgoing emails for non-staff users...
[2025-03-19 02:09:40] Disabling readonly mode...
[2025-03-19 02:09:40] Clearing category cache...
[2025-03-19 02:09:40] Reloading translations...
[2025-03-19 02:09:40] Remapping uploads...
[2025-03-19 02:09:40] Restoring uploads, this may take a while...
[2025-03-19 02:10:00] EXCEPTION: 1 posts are not remapped to new S3 upload URL. S3 migration failed for db 'default'.
[2025-03-19 02:10:00] /var/www/discourse/lib/file_store/to_s3_migration.rb:132:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:81:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:383:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:59:in `migrate'
/var/www/discourse/lib/file_store/s3_store.rb:354:in `copy_from'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:69:in `restore_uploads'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:49:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:167:in `restore_uploads'
/var/www/discourse/lib/backup_restore/restorer.rb:71:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:20:in `restore'
/var/www/discourse/script/spawn_backup_restore.rb:33:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'
[2025-03-19 02:10:00] Trying to rollback...
[2025-03-19 02:10:00] Rolling back...
[2025-03-19 02:10:00] Cleaning stuff up...
[2025-03-19 02:10:00] Dropping functions from the discourse_functions schema...
[2025-03-19 02:10:00] Removing tmp '/var/www/discourse/tmp/restores/default/2025-03-19-020905' directory...
[2025-03-19 02:10:00] Unpausing sidekiq...
[2025-03-19 02:10:00] Marking restore as finished...
[2025-03-19 02:10:00] Notifying 'Admin' of the end of the restore...

I can post it in pieces I guess if that doesn’t help.

2025-03-19 02:09:05] [STARTED]
[2025-03-19 02:09:05] 'Admin' has started the restore!
[2025-03-19 02:09:05] Marking restore as running...
[2025-03-19 02:09:05] Making sure /var/www/discourse/tmp/restores/default/2025-03-19-020905 exists...
[2025-03-19 02:09:05] Copying archive to tmp directory...
[2025-03-19 02:09:05] Unzipping archive, this may take a while...
[2025-03-19 02:09:06] Extracting dump file...
[2025-03-19 02:09:09] Validating metadata...
[2025-03-19 02:09:09]   Current version: 20250313045010
[2025-03-19 02:09:09]   Restored version: 20210111025920
[2025-03-19 02:09:09] Enabling readonly mode...
[2025-03-19 02:09:09] Pausing sidekiq...
[2025-03-19 02:09:09] Waiting up to 60 seconds for Sidekiq to finish running jobs...
[2025-03-19 02:09:15] Creating missing functions in the discourse_functions schema...
[2025-03-19 02:09:15] Restoring dump file... (this may take a while)
[2025-03-19 02:09:15] SET
[2025-03-19 02:09:15] SET
[2025-03-19 02:09:15] SET
[2025-03-19 02:09:15] SET
[2025-03-19 02:09:15] SET
[2025-03-19 02:09:15] set_config
[2025-03-19 02:09:15] ------------
[2025-03-19 02:09:15] (1 row)
[2025-03-19 02:09:15] SET
[2025-03-19 02:09:15] SET
[2025-03-19 02:09:15] SET
[2025-03-19 02:09:15] SET
[2025-03-19 02:09:15] SET
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] COMMENT
[2025-03-19 02:09:15] COMMENT
[2025-03-19 02:09:15] COMMENT
[2025-03-19 02:09:15] COMMENT
[2025-03-19 02:09:15] COMMENT
[2025-03-19 02:09:15] COMMENT
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] COMMENT
[2025-03-19 02:09:15] CREATE VIEW
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:15] CREATE SEQUENCE
[2025-03-19 02:09:15] ALTER SEQUENCE
[2025-03-19 02:09:15] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] CREATE TABLE
[2025-03-19 02:09:16] CREATE SEQUENCE
[2025-03-19 02:09:16] ALTER SEQUENCE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] ALTER TABLE
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 1
[2025-03-19 02:09:16] COPY 3331
[2025-03-19 02:09:16] COPY 1
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 6
[2025-03-19 02:09:16] COPY 5
[2025-03-19 02:09:16] COPY 3
[2025-03-19 02:09:16] COPY 50
[2025-03-19 02:09:16] COPY 1
[2025-03-19 02:09:16] COPY 12
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 80
[2025-03-19 02:09:16] COPY 44
[2025-03-19 02:09:16] COPY 1
[2025-03-19 02:09:16] COPY 11
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 1
[2025-03-19 02:09:16] COPY 6
[2025-03-19 02:09:16] COPY 30
[2025-03-19 02:09:16] COPY 3
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 834
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 190
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 8
[2025-03-19 02:09:16] COPY 172
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 60
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 299
[2025-03-19 02:09:16] COPY 9
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 7
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 97
[2025-03-19 02:09:16] COPY 9
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 6
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 503
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 35
[2025-03-19 02:09:16] COPY 277
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 8
[2025-03-19 02:09:16] COPY 12
[2025-03-19 02:09:16] COPY 32
[2025-03-19 02:09:16] COPY 5
[2025-03-19 02:09:16] COPY 7
[2025-03-19 02:09:16] COPY 163
[2025-03-19 02:09:16] COPY 133
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 65
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 44
[2025-03-19 02:09:16] COPY 284
[2025-03-19 02:09:16] COPY 346
[2025-03-19 02:09:16] COPY 2476
[2025-03-19 02:09:16] COPY 30
[2025-03-19 02:09:16] COPY 357
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 2
[2025-03-19 02:09:16] COPY 3
[2025-03-19 02:09:16] COPY 3
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 6
[2025-03-19 02:09:16] COPY 3
[2025-03-19 02:09:16] COPY 3
[2025-03-19 02:09:16] COPY 124880
[2025-03-19 02:09:16] COPY 1126
[2025-03-19 02:09:16] COPY 1126
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 5
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 25
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:16] COPY 131
[2025-03-19 02:09:16] COPY 0
[2025-03-19 02:09:29] COPY 2672
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 15
[2025-03-19 02:09:29] COPY 3
[2025-03-19 02:09:29] COPY 8
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 5
[2025-03-19 02:09:29] COPY 38
[2025-03-19 02:09:29] COPY 19
[2025-03-19 02:09:29] COPY 103
[2025-03-19 02:09:29] COPY 7
[2025-03-19 02:09:29] COPY 16
[2025-03-19 02:09:29] COPY 1
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 9
[2025-03-19 02:09:29] COPY 145
[2025-03-19 02:09:29] COPY 114
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 30
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 672
[2025-03-19 02:09:29] COPY 2365
[2025-03-19 02:09:29] COPY 139
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 49
[2025-03-19 02:09:29] COPY 718
[2025-03-19 02:09:29] COPY 8
[2025-03-19 02:09:29] COPY 3
[2025-03-19 02:09:29] COPY 26
[2025-03-19 02:09:29] COPY 5
[2025-03-19 02:09:29] COPY 8
[2025-03-19 02:09:29] COPY 2
[2025-03-19 02:09:29] COPY 143
[2025-03-19 02:09:29] COPY 272
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 143
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 855
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 143
[2025-03-19 02:09:29] COPY 1041
[2025-03-19 02:09:29] COPY 143
[2025-03-19 02:09:29] COPY 143
[2025-03-19 02:09:29] COPY 21
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 143
[2025-03-19 02:09:29] COPY 46
[2025-03-19 02:09:29] COPY 567
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 143
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 136
[2025-03-19 02:09:29] COPY 11
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] COPY 0
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 3335
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 3268
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 6
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 4
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 102
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 2
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 12
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 106
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1154
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 5
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 9
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 40
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 4
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 859
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 283
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 269
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 208
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 194
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 927
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 40
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 7
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 97
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 9
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 14
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 688
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 35
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 2221
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 11
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 16
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 5
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 9
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 163
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 234
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 49
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 346
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 118
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 372
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 6
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 7
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 3
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 6
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 3
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 3
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] ---------
[2025-03-19 02:09:29] 1611117
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1126
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 6
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 31
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 2031
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 4259
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 26
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 3
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 8
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 6
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 48
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 19
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 108
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 10
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 16
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 10
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 264
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 30
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 678
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 140
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 72
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 783
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 8
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 4
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 26
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 7
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 4442
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 284
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 157
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 298
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 8
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 155
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 855
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1041
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 23
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 57
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 576
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 155
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1648
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 14
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] setval
[2025-03-19 02:09:29] --------
[2025-03-19 02:09:29] 1
[2025-03-19 02:09:29] (1 row)
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:29] ALTER TABLE
[2025-03-19 02:09:30] ALTER TABLE
[2025-03-19 02:09:30] ALTER TABLE
[2025-03-19 02:09:30] ALTER TABLE
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:30] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE INDEX
[2025-03-19 02:09:31] CREATE TRIGGER
[2025-03-19 02:09:31] CREATE TRIGGER
[2025-03-19 02:09:31] CREATE TRIGGER
[2025-03-19 02:09:31] CREATE TRIGGER
[2025-03-19 02:09:31] ALTER TABLE
[2025-03-19 02:09:31] ALTER TABLE
[2025-03-19 02:09:31] ALTER TABLE
[2025-03-19 02:09:31] ALTER TABLE
[2025-03-19 02:09:31] ALTER TABLE
[2025-03-19 02:09:31] ALTER TABLE
[2025-03-19 02:09:31] ALTER TABLE
[2025-03-19 02:09:31] ALTER TABLE
[2025-03-19 02:09:31] ALTER TABLE
[2025-03-19 02:09:31] ALTER TABLE
[2025-03-19 02:09:31] ALTER TABLE
[2025-03-19 02:09:31] Migrating the database...
[2025-03-19 02:09:40] == 20190601000001 CreateAutomationsTable: migrating ===========================
-- create_table(:discourse_automation_automations)
   -> 0.0091s
-- create_table(:discourse_automation_fields)
   -> 0.0061s
-- create_table(:discourse_automation_triggers)
   -> 0.0060s
-- create_table(:discourse_automation_pending_automations)
   -> 0.0034s
== 20190601000001 CreateAutomationsTable: migrated (0.0265s) ==================

== 20201223071241 DeleteStaleCategorySearchPrioritiesFromSiteSettings: migrating 
-- execute("DELETE FROM site_settings WHERE name IN ('category_search_priority_very_low_weight', 'category_search_priority_very_high_weight')\n")
   -> 0.0006s
== 20201223071241 DeleteStaleCategorySearchPrioritiesFromSiteSettings: migrated (0.0012s) 

== 20210106181418 CreateUserNotificationSchedules: migrating ==================
-- create_table(:user_notification_schedules)
   -> 0.0043s
-- add_index(:user_notification_schedules, [:user_id], {:name=>"index_user_notification_schedules_on_user_id"})
   -> 0.0026s
-- add_index(:user_notification_schedules, [:enabled], {:name=>"index_user_notification_schedules_on_enabled"})
   -> 0.0024s
-- add_column(:do_not_disturb_timings, :scheduled, :boolean, {:default=>false})
   -> 0.0008s
-- add_index(:do_not_disturb_timings, [:scheduled], {:name=>"index_do_not_disturb_timings_on_scheduled"})
   -> 0.0025s
== 20210106181418 CreateUserNotificationSchedules: migrated (0.0135s) =========

== 20210108134117 AddPendingPmsTable: migrating ===============================
-- create_table(:discourse_automation_pending_pms)
   -> 0.0067s
== 20210108134117 AddPendingPmsTable: migrated (0.0072s) ======================

== 20210119005647 AddCreatedViaToIncomingEmail: migrating =====================
-- add_column(:incoming_emails, :created_via, :integer, {:null=>true})
   -> 0.0005s
== 20210119005647 AddCreatedViaToIncomingEmail: migrated (0.0010s) ============

== 20210120125607 RenameEnglishLocale: migrating ==============================
-- execute("UPDATE users\nSET locale = 'en_GB'\nWHERE locale = 'en'\n")
   -> 0.0007s
-- execute("UPDATE site_settings\nSET value = 'en_GB'\nWHERE name = 'default_locale' AND value = 'en'\n")
   -> 0.0002s
-- execute("UPDATE translation_overrides\nSET locale = 'en_GB'\nWHERE locale = 'en'\n")
   -> 0.0004s
-- execute("UPDATE theme_translation_overrides\nSET locale = 'en_GB'\nWHERE locale = 'en'\n")
   -> 0.0005s
-- execute("UPDATE users\nSET locale = 'en'\nWHERE locale = 'en_US'\n")
   -> 0.0024s
-- execute("UPDATE site_settings\nSET value = 'en'\nWHERE name = 'default_locale' AND value = 'en_US'\n")
   -> 0.0003s
-- execute("UPDATE translation_overrides\nSET locale = 'en'\nWHERE locale = 'en_US'\n")
   -> 0.0002s
-- execute("UPDATE theme_translation_overrides\nSET locale = 'en'\nWHERE locale = 'en_US'\n")
   -> 0.0002s
== 20210120125607 RenameEnglishLocale: migrated (0.0054s) =====================

== 20210121001720 ChangeIncomingEmailCreatedAtNull: migrating =================
-- change_column_default(:incoming_emails, :created_via, 0)
   -> 0.0032s
-- change_column_null(:incoming_emails, :created_via, false, nil)
   -> 0.0002s
== 20210121001720 ChangeIncomingEmailCreatedAtNull: migrated (0.0046s) ========

== 20210125100452 MigrateSearchDataAfterDefaultLocaleRename: migrating ========
Migrating category_search_data to new locale.
-- execute("UPDATE category_search_data\n   SET locale = 'en'\n WHERE category_id IN (\n        SELECT category_id\n          FROM category_search_data\n         WHERE locale = 'en_US'\n         LIMIT 100000\n     )\n")
   -> 0.0008s
Migrated 11 rows of category_search_data to new locale.
-- execute("UPDATE category_search_data\n   SET locale = 'en'\n WHERE category_id IN (\n        SELECT category_id\n          FROM category_search_data\n         WHERE locale = 'en_US'\n         LIMIT 100000\n     )\n")
   -> 0.0003s
Migrating tag_search_data to new locale.
-- execute("UPDATE tag_search_data\n   SET locale = 'en'\n WHERE tag_id IN (\n        SELECT tag_id\n          FROM tag_search_data\n         WHERE locale = 'en_US'\n         LIMIT 100000\n     )\n")
   -> 0.0005s
Migrating topic_search_data to new locale.
-- execute("UPDATE topic_search_data\n   SET locale = 'en'\n WHERE topic_id IN (\n        SELECT topic_id\n          FROM topic_search_data\n         WHERE locale = 'en_US'\n         LIMIT 100000\n     )\n")
   -> 0.0022s
Migrated 114 rows of topic_search_data to new locale.
-- execute("UPDATE topic_search_data\n   SET locale = 'en'\n WHERE topic_id IN (\n        SELECT topic_id\n          FROM topic_search_data\n         WHERE locale = 'en_US'\n         LIMIT 100000\n     )\n")
   -> 0.0004s
Migrating user_search_data to new locale.
-- execute("UPDATE user_search_data\n   SET locale = 'en'\n WHERE user_id IN (\n        SELECT user_id\n          FROM user_search_data\n         WHERE locale = 'en_US'\n         LIMIT 100000\n     )\n")
   -> 0.0015s
Migrated 143 rows of user_search_data to new locale.
-- execute("UPDATE user_search_data\n   SET locale = 'en'\n WHERE user_id IN (\n        SELECT user_id\n          FROM user_search_data\n         WHERE locale = 'en_US'\n         LIMIT 100000\n     )\n")
   -> 0.0003s
== 20210125100452 MigrateSearchDataAfterDefaultLocaleRename: migrated (0.0067s) 

== 20210126222142 CreateShelvedNotifications: migrating =======================
-- create_table(:shelved_notifications)
   -> 0.0043s
-- add_index(:shelved_notifications, [:notification_id], {:name=>"index_shelved_notifications_on_notification_id"})
   -> 0.0026s
== 20210126222142 CreateShelvedNotifications: migrated (0.0077s) ==============

== 20210127013637 AddUploadSecurityLogColumns: migrating ======================
-- add_column(:uploads, :security_last_changed_at, :timestamp, {:null=>true, :precision=>nil})
   -> 0.0006s
-- add_column(:uploads, :security_last_changed_reason, :string, {:null=>true})
   -> 0.0003s
== 20210127013637 AddUploadSecurityLogColumns: migrated (0.0014s) =============

== 20210127140730 UndoAddProcessedToNotifications: migrating ==================
-- execute("ALTER TABLE notifications DROP COLUMN IF EXISTS processed")
   -> 0.0007s
== 20210127140730 UndoAddProcessedToNotifications: migrated (0.0012s) =========

== 20210128021147 AddAllowUnknownSenderTopicRepliesToGroup: migrating =========
-- add_column(:groups, :allow_unknown_sender_topic_replies, :boolean, {:default=>false, :null=>false})
   -> 0.0010s
== 20210128021147 AddAllowUnknownSenderTopicRepliesToGroup: migrated (0.0015s) 

== 20210131221311 CreateDismissedTopicUsersTable: migrating ===================
-- create_table(:dismissed_topic_users)
   -> 0.0042s
-- add_index(:dismissed_topic_users, [:user_id, :topic_id], {:unique=>true, :name=>"index_dismissed_topic_users_on_user_id_and_topic_id"})
   -> 0.0032s
== 20210131221311 CreateDismissedTopicUsersTable: migrated (0.0080s) ==========

== 20210201034048 MoveCategoryLastSeenAtToNewTable: migrating =================
== 20210201034048 MoveCategoryLastSeenAtToNewTable: migrated (0.0067s) ========

== 20210203031628 AddDurationMinutesToTopicTimer: migrating ===================
-- add_column(:topic_timers, :duration_minutes, :integer)
   -> 0.0005s
== 20210203031628 AddDurationMinutesToTopicTimer: migrated (0.0016s) ==========

== 20210204135429 RenameSsoSiteSettings: migrating ============================
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'enable_discourse_connect', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'enable_sso'\n")
   -> 0.0006s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'discourse_connect_allows_all_return_paths', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'sso_allows_all_return_paths'\n")
   -> 0.0002s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'enable_discourse_connect_provider', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'enable_sso_provider'\n")
   -> 0.0002s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'verbose_discourse_connect_logging', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'verbose_sso_logging'\n")
   -> 0.0003s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'discourse_connect_url', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'sso_url'\n")
   -> 0.0002s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'discourse_connect_secret', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'sso_secret'\n")
   -> 0.0002s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'discourse_connect_provider_secrets', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'sso_provider_secrets'\n")
   -> 0.0002s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'discourse_connect_overrides_groups', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'sso_overrides_groups'\n")
   -> 0.0002s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'discourse_connect_overrides_bio', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'sso_overrides_bio'\n")
   -> 0.0001s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'auth_overrides_email', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'sso_overrides_email'\n")
   -> 0.0002s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'auth_overrides_username', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'sso_overrides_username'\n")
   -> 0.0001s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'auth_overrides_name', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'sso_overrides_name'\n")
   -> 0.0001s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'discourse_connect_overrides_avatar', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'sso_overrides_avatar'\n")
   -> 0.0001s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'discourse_connect_overrides_profile_background', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'sso_overrides_profile_background'\n")
   -> 0.0001s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'discourse_connect_overrides_location', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'sso_overrides_location'\n")
   -> 0.0001s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'discourse_connect_overrides_website', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'sso_overrides_website'\n")
   -> 0.0001s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'discourse_connect_overrides_card_background', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'sso_overrides_card_background'\n")
   -> 0.0001s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'auth_skip_create_confirm', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'external_auth_skip_create_confirm'\n")
   -> 0.0001s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'auth_immediately', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'external_auth_immediately'\n")
   -> 0.0002s
== 20210204135429 RenameSsoSiteSettings: migrated (0.0045s) ===================

== 20210204195932 AddReplacementToWatchedWords: migrating =====================
-- add_column(:watched_words, :replacement, :string, {:null=>true})
   -> 0.0004s
== 20210204195932 AddReplacementToWatchedWords: migrated (0.0008s) ============

== 20210207232853 FixTopicTimerDurationMinutes: migrating =====================
== 20210207232853 FixTopicTimerDurationMinutes: migrated (0.0009s) ============

== 20210215231312 FixGroupFlairAvatarUploadSecurityAndAcls: migrating =========
== 20210215231312 FixGroupFlairAvatarUploadSecurityAndAcls: migrated (0.0008s) 

== 20210218022739 MoveNewSinceToNewTableAgain: migrating ======================
== 20210218022739 MoveNewSinceToNewTableAgain: migrated (0.0100s) =============

== 20210218144656 AddIsFavoriteToUserBadge: migrating =========================
-- add_column(:user_badges, :is_favorite, :boolean)
   -> 0.0005s
== 20210218144656 AddIsFavoriteToUserBadge: migrated (0.0009s) ================

== 20210219171329 DropOldSsoSiteSettings: migrating ===========================
-- execute("DELETE FROM site_settings\nWHERE name IN (\n  'enable_sso',\n  'sso_allows_all_return_paths',\n  'enable_sso_provider',\n  'verbose_sso_logging',\n  'sso_url',\n  'sso_secret',\n  'sso_provider_secrets',\n  'sso_overrides_groups',\n  'sso_overrides_bio',\n  'sso_overrides_email',\n  'sso_overrides_username',\n  'sso_overrides_name',\n  'sso_overrides_avatar',\n  'sso_overrides_profile_background',\n  'sso_overrides_location',\n  'sso_overrides_website',\n  'sso_overrides_card_background',\n  'external_auth_skip_create_confirm',\n  'external_auth_immediately'\n)\n")
   -> 0.0002s
== 20210219171329 DropOldSsoSiteSettings: migrated (0.0006s) ==================

== 20210224162050 RemoveEmojiOneFromEmojiSetSiteSetting: migrating ============
-- execute("SELECT value FROM site_settings WHERE name='emoji_set' and value='emoji_one'")
   -> 0.0002s
== 20210224162050 RemoveEmojiOneFromEmojiSetSiteSetting: migrated (0.0006s) ===

== 20210225230057 CreateChatTables: migrating =================================
-- create_table(:topic_chats)
   -> 0.0075s
-- create_table(:topic_chat_messages)
   -> 0.0095s
-- add_index(:topic_chat_messages, [:topic_id, :created_at], {:name=>"index_topic_chat_messages_on_topic_id_and_created_at"})
   -> 0.0024s
== 20210225230057 CreateChatTables: migrated (0.0202s) ========================

== 20210302164429 DropFlashOneboxSiteSetting: migrating =======================
-- execute("DELETE FROM site_settings\nWHERE name = 'enable_flash_video_onebox'\n")
   -> 0.0002s
== 20210302164429 DropFlashOneboxSiteSetting: migrated (0.0006s) ==============

== 20210308010745 DeleteOrphanPostActions: migrating ==========================
-- execute("DELETE FROM post_actions\nUSING post_actions pa\nLEFT JOIN posts ON posts.id = pa.post_id\nWHERE posts.id IS NULL\nAND post_actions.id = pa.id\n")
   -> 0.0016s
== 20210308010745 DeleteOrphanPostActions: migrated (0.0019s) =================

== 20210308195916 AddUniqueIndexToInvitedGroups: migrating ====================
-- execute("DELETE FROM invited_groups a\nUSING invited_groups b\nWHERE a.id < b.id\n  AND a.invite_id = b.invite_id\n  AND a.group_id = b.group_id\n")
   -> 0.0005s
-- add_index(:invited_groups, [:group_id, :invite_id], {:unique=>true, :name=>"index_invited_groups_on_group_id_and_invite_id"})
   -> 0.0032s
== 20210308195916 AddUniqueIndexToInvitedGroups: migrated (0.0042s) ===========

== 20210311022303 DropShowFilterByTagSiteSetting: migrating ===================
-- execute("DELETE FROM site_settings\nWHERE name = 'show_filter_by_tag'\n")
   -> 0.0002s
== 20210311022303 DropShowFilterByTagSiteSetting: migrated (0.0006s) ==========

== 20210311070755 AddImageUploadIdToBadges: migrating =========================
-- add_column(:badges, :image_upload_id, :integer)
   -> 0.0005s
== 20210311070755 AddImageUploadIdToBadges: migrated (0.0024s) ================

== 20210315173137 SetDisableMailingListMode: migrating ========================
-- execute("SELECT COUNT(*) FROM user_options WHERE mailing_list_mode")
   -> 0.0003s
== 20210315173137 SetDisableMailingListMode: migrated (0.0007s) ===============

== 20210318020143 AddPinnedColumnToBookmarks: migrating =======================
-- add_column(:bookmarks, :pinned, :boolean, {:default=>false})
   -> 0.0007s
== 20210318020143 AddPinnedColumnToBookmarks: migrated (0.0013s) ==============

== 20210323142518 UpdateInvitesRedemptionCount: migrating =====================
-- execute("WITH invite_counts AS (\n  SELECT invite_id, COUNT(*) count\n  FROM invited_users\n  GROUP BY invite_id\n)\nUPDATE invites\nSET redemption_count = GREATEST(redemption_count, count)\nFROM invite_counts\nWHERE invites.id = invite_counts.invite_id\n")
   -> 0.0010s
== 20210323142518 UpdateInvitesRedemptionCount: migrated (0.0014s) ============

== 20210324043327 DeleteOrphanPostRevisions: migrating ========================
-- execute("DELETE FROM post_revisions\nUSING post_revisions pr\nLEFT JOIN posts ON posts.id = pr.post_id\nWHERE posts.id IS NULL\nAND post_revisions.id = pr.id\n")
   -> 0.0008s
== 20210324043327 DeleteOrphanPostRevisions: migrated (0.0012s) ===============

== 20210328233843 FixBookmarksWithIncorrectTopicId: migrating =================
== 20210328233843 FixBookmarksWithIncorrectTopicId: migrated (0.0016s) ========

== 20210403025854 AddActionCodeToTopicChatMessage: migrating ==================
-- add_column(:topic_chat_messages, :action_code, :string, {:null=>true})
   -> 0.0005s
== 20210403025854 AddActionCodeToTopicChatMessage: migrated (0.0008s) =========

== 20210406060434 FixTopicUserBookmarkedSyncIssuesAgain: migrating ============
== 20210406060434 FixTopicUserBookmarkedSyncIssuesAgain: migrated (0.0014s) ===

== 20210409142455 AddTokenToInvites: migrating ================================
-- add_column(:invites, :email_token, :string)
   -> 0.0005s
== 20210409142455 AddTokenToInvites: migrated (0.0015s) =======================

== 20210414013318 AddCategorySettingAllowUnlimitedOwnerEditsOp: migrating =====
-- add_column(:categories, :allow_unlimited_owner_edits_on_first_post, :boolean, {:default=>false, :null=>false})
   -> 0.0008s
== 20210414013318 AddCategorySettingAllowUnlimitedOwnerEditsOp: migrated (0.0013s) 

== 20210420015635 AddSearchableToUserFields: migrating ========================
-- add_column(:user_fields, :searchable, :boolean, {:default=>false, :null=>false})
   -> 0.0006s
== 20210420015635 AddSearchableToUserFields: migrated (0.0009s) ===============

== 20210426193009 MoveApprovedQueuedPostsTopicAndPostData: migrating ==========
== 20210426193009 MoveApprovedQueuedPostsTopicAndPostData: migrated (0.0013s) =

== 20210512090204 AddTimestampsToAutomations: migrating =======================
-- add_column(:discourse_automation_automations, :last_updated_by_id, :integer, {:null=>true})
   -> 0.0004s
-- execute("ALTER TABLE discourse_automation_automations ALTER COLUMN last_updated_by_id SET NOT NULL;\n")
   -> 0.0002s
== 20210512090204 AddTimestampsToAutomations: migrated (0.0013s) ==============

== 20210513125608 RemoveLengthConstrainFromTopicExcerpt: migrating ============
-- change_column(:topics, :excerpt, :string, {:null=>true})
   -> 0.0004s
== 20210513125608 RemoveLengthConstrainFromTopicExcerpt: migrated (0.0008s) ===

== 20210517061815 AddDedicatedEnableImapSmtpColumnsForGroup: migrating ========
-- add_column(:groups, :smtp_enabled, :boolean, {:default=>false})
   -> 0.0006s
-- add_column(:groups, :smtp_updated_at, :timestamp, {:null=>true, :precision=>nil})
   -> 0.0002s
-- add_column(:groups, :smtp_updated_by_id, :integer, {:null=>true})
   -> 0.0002s
-- add_column(:groups, :imap_enabled, :boolean, {:default=>false})
   -> 0.0005s
-- add_column(:groups, :imap_updated_at, :timestamp, {:null=>true, :precision=>nil})
   -> 0.0002s
-- add_column(:groups, :imap_updated_by_id, :integer, {:null=>true})
   -> 0.0002s
== 20210517061815 AddDedicatedEnableImapSmtpColumnsForGroup: migrated (0.0028s) 

== 20210517073211 AddStalledWikiCustomFieldsIndex: migrating ==================
-- add_index(:post_custom_fields, :post_id, {:unique=>true, :name=>"index_post_custom_fields_on_stalled_wiki_triggered_at", :where=>"name = 'stalled_wiki_triggered_at'"})
   -> 0.0050s
== 20210517073211 AddStalledWikiCustomFieldsIndex: migrated (0.0054s) =========

== 20210525112226 RemoveLengthConstrainFromTopicLinkUrl: migrating ============
-- change_column(:topic_links, :url, :string, {:null=>false})
   -> 0.0009s
== 20210525112226 RemoveLengthConstrainFromTopicLinkUrl: migrated (0.0013s) ===

== 20210526053611 AddErrorCountToPushSubscriptions: migrating =================
-- add_column(:push_subscriptions, :error_count, :integer, {:null=>false, :default=>0})
   -> 0.0006s
-- add_column(:push_subscriptions, :first_error_at, :timestamp, {:precision=>nil})
   -> 0.0002s
== 20210526053611 AddErrorCountToPushSubscriptions: migrated (0.0012s) ========

== 20210527114834 SetTaggingEnabled: migrating ================================
-- execute("INSERT INTO site_settings(name, data_type, value, created_at, updated_at)\nVALUES('tagging_enabled', 5, 'f', NOW(), NOW())\nON CONFLICT (name) DO NOTHING\n")
   -> 0.0002s
== 20210527114834 SetTaggingEnabled: migrated (0.0013s) =======================

== 20210527131318 CreateDirectoryColumns: migrating ===========================
-- create_table(:directory_columns)
   -> 0.0064s
-- add_index(:directory_columns, [:enabled, :position, :user_field_id], {:name=>"directory_column_index"})
   -> 0.0023s
== 20210527131318 CreateDirectoryColumns: migrated (0.0098s) ==================

== 20210528003603 FixBadgeImageAvatarUploadSecurityAndAcls: migrating =========
== 20210528003603 FixBadgeImageAvatarUploadSecurityAndAcls: migrated (0.0010s) 

== 20210528144647 MigrateWatchedWordsFromReplaceToLink: migrating =============
-- execute("UPDATE watched_words\nSET action = 8\nWHERE action = 5 AND replacement ILIKE 'http%'\n")
   -> 0.0005s
== 20210528144647 MigrateWatchedWordsFromReplaceToLink: migrated (0.0008s) ====

== 20210528203310 PostMigrateGiftFromPmToPms: migrating =======================
== 20210528203310 PostMigrateGiftFromPmToPms: migrated (0.0007s) ==============

== 20210530122323 MoveTriggersToFields: migrating =============================
-- add_column(:discourse_automation_automations, :trigger, :string, {:null=>true})
   -> 0.0004s
-- add_column(:discourse_automation_fields, :target, :string, {:null=>true})
   -> 0.0004s
== 20210530122323 MoveTriggersToFields: migrated (0.0014s) ====================

== 20210530122334 MoveExistingTriggersToFields: migrating =====================
-- execute("DROP TABLE IF EXISTS discourse_automation_triggers;\n")
   -> 0.0007s
== 20210530122334 MoveExistingTriggersToFields: migrated (0.0014s) ============

== 20210601002145 RenameTrustLevelTranslations: migrating =====================
-- execute("UPDATE translation_overrides\nSET translation_key = 'js.trust_levels.names.newuser'\nWHERE translation_key = 'trust_levels.newuser.title'\n")
   -> 0.0003s
-- execute("UPDATE translation_overrides\nSET translation_key = 'js.trust_levels.names.basic'\nWHERE translation_key = 'trust_levels.basic.title'\n")
   -> 0.0002s
-- execute("UPDATE translation_overrides\nSET translation_key = 'js.trust_levels.names.member'\nWHERE translation_key = 'trust_levels.member.title'\n")
   -> 0.0002s
-- execute("UPDATE translation_overrides\nSET translation_key = 'js.trust_levels.names.regular'\nWHERE translation_key = 'trust_levels.regular.title'\n")
   -> 0.0001s
-- execute("UPDATE translation_overrides\nSET translation_key = 'js.trust_levels.names.leader'\nWHERE translation_key = 'trust_levels.leader.title'\n")
   -> 0.0001s
== 20210601002145 RenameTrustLevelTranslations: migrated (0.0015s) ============

== 20210603135629 ConvertDateComponentToDateTime: migrating ===================
== 20210603135629 ConvertDateComponentToDateTime: migrated (0.0006s) ==========

== 20210614232334 AddSmtpGroupIdToEmailLog: migrating =========================
-- add_column(:email_logs, :smtp_group_id, :integer, {:null=>true, :index=>true})
   -> 0.0006s
== 20210614232334 AddSmtpGroupIdToEmailLog: migrated (0.0010s) ================

== 20210617183010 AddAutomaticColumnDirectoryColumns: migrating ===============
== 20210617183010 AddAutomaticColumnDirectoryColumns: migrated (0.0016s) ======

== 20210617202227 ChangeAutomaticOnDirectoryColumnsToBool: migrating ==========
-- remove_column(:directory_columns, :automatic)
   -> 0.0004s
-- add_column(:directory_columns, :automatic, :boolean, {:default=>true, :null=>false})
   -> 0.0005s
-- execute("UPDATE directory_columns SET automatic = (user_field_id IS NULL);\n")
   -> 0.0003s
== 20210617202227 ChangeAutomaticOnDirectoryColumnsToBool: migrated (0.0023s) =

== 20210618135229 ReintroduceTypeToDirectoryColumns: migrating ================
-- add_column(:directory_columns, :type, :integer, {:default=>0, :null=>false})
   -> 0.0006s
== 20210618135229 ReintroduceTypeToDirectoryColumns: migrated (0.0024s) =======

== 20210621002201 AddColumnsToEmailLogToMatchIncomingForSmtpImap: migrating ===
-- add_column(:email_logs, :cc_addresses, :text, {:null=>true})
   -> 0.0003s
-- add_column(:email_logs, :cc_user_ids, :integer, {:array=>true, :null=>true})
   -> 0.0002s
-- add_column(:email_logs, :raw, :text, {:null=>true})
   -> 0.0002s
-- add_column(:email_logs, :topic_id, :integer, {:null=>true})
   -> 0.0003s
-- add_index(:email_logs, :topic_id, {:where=>"topic_id IS NOT NULL", :name=>"index_email_logs_on_topic_id"})
   -> 0.0052s
== 20210621002201 AddColumnsToEmailLogToMatchIncomingForSmtpImap: migrated (0.0071s) 

== 20210621103509 AddBanneredUntil: migrating =================================
-- add_column(:topics, :bannered_until, :timestamp, {:null=>true, :precision=>nil})
   -> 0.0005s
-- add_index(:topics, :bannered_until, {:where=>"bannered_until IS NOT NULL", :name=>"index_topics_on_bannered_until"})
   -> 0.0066s
== 20210621103509 AddBanneredUntil: migrated (0.0078s) ========================

== 20210621190335 MigratePendingUsersReminderDelaySetting: migrating ==========
== 20210621190335 MigratePendingUsersReminderDelaySetting: migrated (0.0010s) =

== 20210621234939 BackfillEmailLogTopicId: migrating ==========================
== 20210621234939 BackfillEmailLogTopicId: migrated (0.0015s) =================

== 20210624023831 RemoveHighestSeenPostNumberFromTopicUsers: migrating ========
== 20210624023831 RemoveHighestSeenPostNumberFromTopicUsers: migrated (0.0020s) 

== 20210624080131 AddPartialIndexPinnedUntil: migrating =======================
-- execute("CREATE INDEX CONCURRENTLY IF NOT EXISTS \"index_topics_on_pinned_until\"\nON \"topics\" (\"pinned_until\")\nWHERE pinned_until IS NOT NULL\n")
   -> 0.0038s
== 20210624080131 AddPartialIndexPinnedUntil: migrated (0.0044s) ==============

== 20210625203049 AddFlairGroupIdToUsers: migrating ===========================
-- add_column(:users, :flair_group_id, :integer, {:null=>true})
   -> 0.0004s
== 20210625203049 AddFlairGroupIdToUsers: migrated (0.0009s) ==================

== 20210628035905 DropDurationColumnFromTopicTimers: migrating ================
== 20210628035905 DropDurationColumnFromTopicTimers: migrated (0.0013s) =======

== 20210701233509 DeleteOldReminderTopicTimers: migrating =====================
== 20210701233509 DeleteOldReminderTopicTimers: migrated (0.0005s) ============

== 20210702084757 ForceValueForEveryFields: migrating =========================
== 20210702084757 ForceValueForEveryFields: migrated (0.0126s) ================

== 20210702204007 AddDefaultAutoCloseSecondsToCategory: migrating =============
-- add_column(:categories, :default_slow_mode_seconds, :integer)
   -> 0.0007s
== 20210702204007 AddDefaultAutoCloseSecondsToCategory: migrated (0.0011s) ====

== 20210706091905 DropDisableJumpReplyColumnFromUserOptions: migrating ========
== 20210706091905 DropDisableJumpReplyColumnFromUserOptions: migrated (0.0015s) 

== 20210706214013 RenameTopicChatsToChatChannels: migrating ===================
-- rename_table(:topic_chats, :chat_channels)
   -> 0.0042s
-- rename_column(:chat_channels, :topic_id, :chatable_id)
   -> 0.0016s
-- change_column(:chat_channels, :chatable_id, :integer, {:unique=>false})
   -> 0.0006s
-- add_column(:chat_channels, :chatable_type, :string)
   -> 0.0031s
-- change_column_null(:chat_channels, :chatable_type, false, nil)
   -> 0.0003s
-- add_index(:chat_channels, [:chatable_id, :chatable_type], {:name=>"index_chat_channels_on_chatable_id_and_chatable_type"})
   -> 0.0028s
-- rename_table(:topic_chat_messages, :chat_messages)
   -> 0.0037s
-- rename_column(:chat_messages, :topic_id, :chat_channel_id)
   -> 0.0019s
-- change_column_null(:chat_messages, :post_id, true, nil)
   -> 0.0004s
== 20210706214013 RenameTopicChatsToChatChannels: migrated (0.0198s) ==========

== 20210708035525 AddUserIdIndexToPostRevisions: migrating ====================
-- add_index(:post_revisions, :user_id, {:name=>"index_post_revisions_on_user_id"})
   -> 0.0031s
== 20210708035525 AddUserIdIndexToPostRevisions: migrated (0.0036s) ===========

== 20210708035538 AddPostEditsCountToUserStats: migrating =====================
-- add_column(:user_stats, :post_edits_count, :integer)
   -> 0.0004s
== 20210708035538 AddPostEditsCountToUserStats: migrated (0.0028s) ============

== 20210709042135 CreateExternalUploadStubs: migrating ========================
-- create_table(:external_upload_stubs)
   -> 0.0114s
-- add_index(:external_upload_stubs, [:key], {:unique=>true, :name=>"index_external_upload_stubs_on_key"})
   -> 0.0026s
== 20210709042135 CreateExternalUploadStubs: migrated (0.0146s) ===============

== 20210709053030 DropUploadsVerified: migrating ==============================
== 20210709053030 DropUploadsVerified: migrated (0.0017s) =====================

== 20210713092503 SetUsersFlairGroupId: migrating =============================
-- execute("UPDATE users\nSET flair_group_id = primary_group_id\nFROM groups\nWHERE users.primary_group_id = groups.id AND\n      users.flair_group_id IS NULL AND\n      (groups.flair_icon IS NOT NULL OR groups.flair_upload_id IS NOT NULL)\n")
   -> 0.0008s
== 20210713092503 SetUsersFlairGroupId: migrated (0.0012s) ====================

== 20210720221817 AddDraftCountToUserStat: migrating ==========================
-- add_column(:user_stats, :draft_count, :integer, {:default=>0, :null=>false})
   -> 0.0007s
-- execute("UPDATE user_stats\nSET draft_count = new_user_stats.draft_count\nFROM (SELECT user_stats.user_id, COUNT(drafts.id) draft_count\n      FROM user_stats\n      LEFT JOIN drafts ON user_stats.user_id = drafts.user_id\n      GROUP BY user_stats.user_id) new_user_stats\nWHERE user_stats.user_id = new_user_stats.user_id\n  AND user_stats.draft_count <> new_user_stats.draft_count\n")
   -> 0.0008s
== 20210720221817 AddDraftCountToUserStat: migrated (0.0019s) =================

== 20210729134042 CreateChatMessageRevisions: migrating =======================
-- create_table(:chat_message_revisions)
   -> 0.0068s
-- add_index(:chat_message_revisions, [:chat_message_id], {:name=>"index_chat_message_revisions_on_chat_message_id"})
   -> 0.0041s
== 20210729134042 CreateChatMessageRevisions: migrated (0.0116s) ==============

== 20210730134847 CreateUserChatChannelLastRead: migrating ====================
-- create_table(:user_chat_channel_last_reads)
   -> 0.0049s
-- add_index(:user_chat_channel_last_reads, [:chat_channel_id, :user_id], {:unique=>true, :name=>"user_chat_channel_reads_index"})
   -> 0.0028s
== 20210730134847 CreateUserChatChannelLastRead: migrated (0.0084s) ===========

== 20210802131421 RemovePostProcessedTriggerOption: migrating =================
== 20210802131421 RemovePostProcessedTriggerOption: migrated (0.0007s) ========

== 20210805204149 MakesAutomationDisabledByDefault: migrating =================
-- change_column_default(:discourse_automation_automations, :enabled, false)
   -> 0.0034s
== 20210805204149 MakesAutomationDisabledByDefault: migrated (0.0040s) ========

== 20210812033033 AddMultipartAndSizeColumnsToExternalUploadStubs: migrating ==
-- add_column(:external_upload_stubs, :multipart, :boolean, {:default=>false, :null=>false})
   -> 0.0022s
-- add_column(:external_upload_stubs, :external_upload_identifier, :string, {:null=>true})
   -> 0.0003s
-- add_column(:external_upload_stubs, :filesize, :bigint)
   -> 0.0003s
-- add_index(:external_upload_stubs, :external_upload_identifier, {:name=>"index_external_upload_stubs_on_external_upload_identifier"})
   -> 0.0047s
-- change_column_null(:external_upload_stubs, :filesize, false, nil)
   -> 0.0019s
== 20210812033033 AddMultipartAndSizeColumnsToExternalUploadStubs: migrated (0.0108s) 

== 20210812145801 CreateDirectMessageTables: migrating ========================
-- create_table(:direct_message_channels)
   -> 0.0040s
-- create_table(:direct_message_users)
   -> 0.0051s
-- add_index(:direct_message_users, [:direct_message_channel_id, :user_id], {:unique=>true, :name=>"direct_message_users_index"})
   -> 0.0031s
== 20210812145801 CreateDirectMessageTables: migrated (0.0129s) ===============

== 20210813141741 AddTimestampsToChatChannels: migrating ======================
-- add_column(:chat_channels, :created_at, :timestamp)
   -> 0.0013s
-- add_column(:chat_channels, :updated_at, :timestamp)
   -> 0.0012s
-- change_column_null(:chat_channels, :created_at, false, nil)
   -> 0.0002s
-- change_column_null(:chat_channels, :updated_at, false, nil)
   -> 0.0002s
== 20210813141741 AddTimestampsToChatChannels: migrated (0.0051s) =============

== 20210819152920 ChangeAllowUploadedAvatars: migrating =======================
-- execute("UPDATE site_settings\nSET data_type = 7, value = (CASE WHEN value = 'f' THEN 'disabled' ELSE '0' END)\nWHERE name = 'allow_uploaded_avatars'\n")
   -> 0.0003s
== 20210819152920 ChangeAllowUploadedAvatars: migrated (0.0006s) ==============

== 20210819202912 CreateIncomingChatWebhooks: migrating =======================
-- create_table(:incoming_chat_webhooks)
   -> 0.0083s
-- add_index(:incoming_chat_webhooks, [:key, :chat_channel_id], {:name=>"index_incoming_chat_webhooks_on_key_and_chat_channel_id"})
   -> 0.0028s
== 20210819202912 CreateIncomingChatWebhooks: migrated (0.0118s) ==============

== 20210823160357 CreateChatWebhookEvents: migrating ==========================
-- create_table(:chat_webhook_events)
   -> 0.0057s
-- add_index(:chat_webhook_events, [:chat_message_id, :incoming_chat_webhook_id], {:unique=>true, :name=>"chat_webhook_events_index"})
   -> 0.0026s
== 20210823160357 CreateChatWebhookEvents: migrated (0.0090s) =================

== 20210824203421 RemovePostTimingsSummaryIndex: migrating ====================
-- remove_index(:post_timings, {:column=>[:topic_id, :post_number], :name=>:post_timings_summary, :if_exists=>true})
   -> 0.0056s
== 20210824203421 RemovePostTimingsSummaryIndex: migrated (0.0077s) ===========

== 20210901130308 CreateUserChatChannelMembership: migrating ==================
-- create_table(:user_chat_channel_memberships)
   -> 0.0079s
-- add_index(:user_chat_channel_memberships, [:user_id, :chat_channel_id, :desktop_notification_level, :mobile_notification_level, :following], {:name=>"user_chat_channel_memberships_index"})
   -> 0.0030s
-- add_index(:user_chat_channel_memberships, [:user_id, :chat_channel_id], {:unique=>true, :name=>"user_chat_channel_unique_memberships"})
   -> 0.0026s
== 20210901130308 CreateUserChatChannelMembership: migrated (0.0155s) =========

== 20210909041448 MakeTopicIdNullableForBookmarks: migrating ==================
-- change_column_null(:bookmarks, :topic_id, true, nil)
   -> 0.0003s
== 20210909041448 MakeTopicIdNullableForBookmarks: migrated (0.0076s) =========

== 20210913032326 AddForTopicToBookmarks: migrating ===========================
-- add_column(:bookmarks, :for_topic, :boolean, {:default=>false, :null=>false})
   -> 0.0007s
-- add_index(:bookmarks, [:user_id, :post_id, :for_topic], {:unique=>true, :name=>"index_bookmarks_on_user_id_and_post_id_and_for_topic"})
   -> 0.0042s
-- index_exists?(:bookmarks, [:user_id, :post_id])
   -> 0.0058s
-- remove_index(:bookmarks, [:user_id, :post_id])
   -> 0.0048s
== 20210913032326 AddForTopicToBookmarks: migrated (0.0188s) ==================

== 20210914011037 ChangeUploadsFilesizeToBigint: migrating ====================
-- change_column(:uploads, :filesize, :bigint)
   -> 0.0289s
== 20210914011037 ChangeUploadsFilesizeToBigint: migrated (0.0296s) ===========

== 20210914152002 UpdateValueOnThemeSettingForUploadType: migrating ===========
-- execute("UPDATE theme_settings\nSET value = (SELECT id FROM uploads WHERE uploads.url = theme_settings.value)\nWHERE data_type = 6\n")
   -> 0.0009s
== 20210914152002 UpdateValueOnThemeSettingForUploadType: migrated (0.0014s) ==

== 20210915142958 AddPendingPostsCountToUserStats: migrating ==================
-- add_column(:user_stats, :pending_posts_count, :integer, {:null=>false, :default=>0})
   -> 0.0008s
== 20210915142958 AddPendingPostsCountToUserStats: migrated (0.0013s) =========

== 20210915215952 MarkReminderTypeAsReadonlyForBookmarks: migrating ===========
== 20210915215952 MarkReminderTypeAsReadonlyForBookmarks: migrated (0.0040s) ==

== 20210915222124 DropReminderTypeIndexForBookmarks: migrating ================
-- index_exists?(:bookmarks, [:reminder_type])
   -> 0.0083s
-- remove_index(:bookmarks, [:reminder_type])
   -> 0.0079s
== 20210915222124 DropReminderTypeIndexForBookmarks: migrated (0.0184s) =======

== 20210915222124 DropReminderTypeIndexForBookmarks: migrating ================
-- index_exists?(:bookmarks, [:reminder_type])
   -> 0.0083s
-- remove_index(:bookmarks, [:reminder_type])
   -> 0.0079s
== 20210915222124 DropReminderTypeIndexForBookmarks: migrated (0.0184s) =======

== 20210920044353 AddDefaultCalendarToUserOptions: migrating ==================
-- add_column(:user_options, :default_calendar, :integer, {:default=>0, :null=>false})
   -> 0.0009s
-- add_index(:user_options, [:user_id, :default_calendar], {:name=>"index_user_options_on_user_id_and_default_calendar"})
   -> 0.0034s
== 20210920044353 AddDefaultCalendarToUserOptions: migrated (0.0052s) =========

== 20210922064213 AlterBumpedAtIndexesOnTopics: migrating =====================
-- execute("CREATE INDEX CONCURRENTLY IF NOT EXISTS index_topics_on_bumped_at_public\nON topics (bumped_at)\nWHERE ((deleted_at IS NULL) AND ((archetype)::text <> 'private_message'::text));\n")
   -> 0.0043s
-- execute("DROP INDEX IF EXISTS index_topics_on_bumped_at;\n")
   -> 0.0041s
-- execute("DROP INDEX IF EXISTS index_forum_threads_on_bumped_at;\n")
   -> 0.0002s
== 20210922064213 AlterBumpedAtIndexesOnTopics: migrated (0.0093s) ============

== 20210928161912 MigrateDeprecatedHtmlSettingType: migrating =================
-- execute("UPDATE site_settings\nSET data_type = 1\nWHERE data_type = 25\n")
   -> 0.0002s
== 20210928161912 MigrateDeprecatedHtmlSettingType: migrated (0.0006s) ========

== 20210929215543 AddTokenHashToEmailToken: migrating =========================
-- add_column(:email_tokens, :token_hash, :string)
   -> 0.0005s
-- execute("UPDATE email_tokens\nSET token_hash = data.token_hash\nFROM (VALUES (2, 'a22d030d9178c9fcbf94078d4757446909cf50ad81734856b1c7513508f04193'),(1, 'ad7977cb12df9c64427978890210db8bfb1138a932e6c7aa33cbc656a5905f26'),(3, '6eaed81c83bae1aa9f6144cd97269ea190b936d34feabdb6553ccb092bd97a8d'),(6, '5722b3981c6581e3df04dc3a5c008d94a610dd68974fd910bc3dd25ca7b69db8'),(33, '6bd0f928bbb464dac1b4a6a271079e55587db40ec814f8a1fff92562cc86af88'),(10, '764b34d1a967542218dce691e0be27453cabb95dfcfe357d3754e00ad3832250'),(8, 'ad1a7482b60b5aafa32f8df3924a8361d18df61e6fb24897af7696b3b40bdb3a'),(11, '76ee2b64ff94a61204fdaaf428fc7bcd64b11f5b452d2b5688efdbcebb377f35'),(9, '09aced77721c0b6527cda6434b00242f77dc0d4b77dec5540b6774504fd82861'),(34, 'da199be00355423e7af42bc8502cacc92cc4eba7ca3ce51a8b2af09c6ae59bc4'),(12, 'b95d2e1b18275f31df5361aa34b9677f5cd53265202c4991eb26f4be25b2418c'),(14, '221a39525baa5914dc188f9719f1d4a476c07d8e4c06a81a0216cdd6ed88983a'),(35, 'eea901e1523bdbb4ccfc4fa6f65885f188e0c0bcb929b4fdbf73e2242596a93d'),(15, '579e4e15f61570c571dff216262bd7fed3b7106ffedb7b10d7e8cc10192be60f'),(59, 'c25596295135c6149c3e546401bfb7fcaa550c5de6f603c1ca54f1281e4be5cd'),(17, 'f91b6658c2e7d1236a30c6aece7fe15ae7e663a7ac735a695826ea435d299405'),(18, '87bda21d5b1a99568a5f9ed0f3088cf4ff80efc6a8c5eca0cac5fd29e75556fb'),(21, '581f3b814c230dda03c8c3d7bf0c55e4c73f3e4d53885a0cb661a7a166d432ad'),(22, '8517bcde1f251dee0a5099d97e29d3204751fd6a30d0678806e60df2f2cd3cf8'),(23, '8b3fa97e25805373cbaff2cc4d43d094159f0a8fe7a7e7efd77113e092c7220b'),(24, 'de834aac361be5f84b78b7c38bf065d3cfed58204df2caba8c1027b946ded25b'),(20, '06e1b540b6986dc884d6e2350c10f27b605fa2f18fd3de575b72c01d0aabaf7f'),(26, '4b3177e5b277a9d92f58aa602533faefec3a85097ffca3e44ec294a5e73cfc50'),(27, '204ac3ea3ec0cde9be09c51d5366a83e5b223dfeac3b164a55b602a91ce7a3d0'),(28, 'ed8e9ab0c717c56c01e0196ee11bb5905ea6378b16579c94004c5327127aeb31'),(29, '6b0c736cc7a556e7c5e7435e6745aa432a61133d1fdb92918b42917741615c3e'),(25, '0195f9a7810bbadf5b43905311a5a038e846bd69b688a376a26e296298ec2a04'),(30, '7e9c22c6ac82dc8e0e06c42424fdfde2d1c20df9200ec65a0b31f1fc0008cff9'),(63, '89a9fff17433719aaf71480b93ab8c325ce6fe81f98d38f005f2bfe70902804b'),(32, '248ac01719ed36b01405175c75f2929077f88364693510ef9a81c092d9bcfd9c'),(36, '3aace3cb54fbe05a711d8ba2fc70306627e1af6efed24109875b9fc3a39aa583'),(37, 'b20cdc14d0436d4a03e7c51e04a2b9021dbebe9991cc84e212ca617db62579c6'),(38, 'cf4620fe80f1d9a8bb980d1f3908c237d549b623e16b0b2762410e6913ea933e'),(39, '90ee5fb112f40ae534b638419a57e4b7c375e4e9eb7e08be042aa7948323ed1b'),(40, '0f4e9b78703aec5a466e33829125758218b6399c96450fbd9d98f54223e4a350'),(41, 'ea331ced23c2a12cf0490cbd377a13350d92d5fb7afbdca04b1d70859dac6897'),(42, 'c046f5d2b6f4da24a6ce46a0a20b1990a9f74ec8920f077f30b4444b24584bb7'),(43, '704217a89a688fbc108d853ef887006c49847827e5f006227432f26b0a9aa212'),(44, 'e21ae17e36c86712182f29af1b432f7c91eb9db2b1876ee4c0885fa6fe252f47'),(45, '41e3aa9b0fb2276592bb18f1c6c41b413c5942abc08bf198eddf40cb475ea711'),(46, '6adb293583f6f7431d62ff2f3c2cb265f826fb53c971034a8d32df8dbc85ee57'),(47, '5a9234dad2d2fb897c93f56aa45a60c321c569a298a6df4538793c0f5d808a9b'),(48, 'd26a6259c549ab6b056623d14470da64bfe82e0f7cd425a014574fe2d12cbe4d'),(49, 'b8af1e9588555087d756234761a0d4ea61e53aa279f5432f4f8044ecb44a9d9c'),(53, '59171756fc78053c03ab44cbe510e79629ce919defd2a24dd32b62d0a8127fdc'),(54, '6e359ba460947cf85b921d0685fc33c3b57cdc02359baaba0e3e188c257b11bf'),(55, '223043b20d8b29d38859c54a5383ede7d6873f5fedbda7d33e73f58f78bed235'),(56, '4b19fc7632c184a48a3b7f7451bf123ac308a4275b291a878d48fa23902b7db6'),(57, 'ffc5b5fe63c53687c49ad32a212e3aeca40c0b0c237a5475a6a76b9fbada556e'),(58, 'f21219f41e5a581b56aeb49177fec3cef2f44117c5392830db59a03eb5e7f410'),(31, 'f113aaa4387678d592ccccb59943dcebec9eaa7ec8c50158daf98ea3835ed1a7'),(60, '94fcd6f7361ecfe280b1cd732771d718fd916d5e84362475b6638eab40567f91'),(61, '151e5ebe42ce80742ade7690f99dc11edaf91303e682ad3f8f1e48fd98151434'),(62, '76b87f2c75112befebad936fa8fcd254e3cb076031dc572a8b22826c2224fedc'),(64, 'a3da753eececb8211f07325c2248850ce492947520cb37fc6a0b29dce57f4f48'),(65, 'ceb80efaf0385a97d07941e5fcda5b715283e42bf9154dad2fe0a98290625a43'),(66, '58ff4259869f79f0d48d1e4391d6c163e30f12b6a797f350732b0e39779710bc'),(67, '90af35483a1b27be25e172280de3d1f1b9307a70f6c7c52895a820ce46c1cb37'),(68, 'f940a2ec0321a8536a7614b89c0f0138bda3c9ebc63501b0aa14079f3fa48122'),(69, '82a5119cfe44d5878a41881a0087cac3a6222b64252c0696b2ab84a157b020f8'),(70, '6ce81b81c1190dcf53689cd563e76d118645a745ff3a8da48319388c2be93b80'),(71, 'a691b9df45cc7ec50d5b2f95168f085ab29cbd281c4f2565c7cd5fe2883dc111'),(72, '937a97677a4f4900c004b9fbc62dd39086542c1372279c764d00747d6c77546e'),(73, '71649a7702ac31a1cda970e7ed22d10d78a0c0bdcc14a1f58f8aa0c7e9dd74b0'),(74, '82a4d83afd535340e9b7ee678b4d1fd55d7d580ec0a59ac445119a7e4fcadb34'),(75, '6e7009bd3de5190c267c8b8b4b26a879648ca0a766fc551bcc9a56fc43af6cbf'),(77, '449f380c8c9206a07b94cde0cb375095aecd72b9626032b3ccde2856376c283d'),(78, '8ca155293a4266f832e32be07696f91f9f73a861050270b627650f795e12ca4a'),(79, '00a97ae5cd0102c9198c8d80364f8841bf94922d298ccfc0ce4086e0e765c822'),(80, '1d16396a903ba1f5673d5f7c1b1a95d1988d4cf2b387048ad935eedd0cdef677'),(13, 'cd2e474b3fb0f20ab7db4f8805cecb48d3914929b69cd2133e1232f410028503'),(81, '5b5553a3df38a35a66f8b243e80f9010c7c5d98710c5040ff07afe26ffb5022d'),(76, '3eceb08fde42a61501eec2965d582f4ceed3abb6205d3d72761717340855e0d2'),(82, '0926872043cb02910d78bd9dbe930543146838527839722604a5cd10b04d7d85'),(84, '71320e61db73068f1bd6908ecbf84c073c758f262b74c8020ed3cfb04209b759'),(85, 'dfcb4fb8f1a9aace0cd3baae57e0cb13278d28d843db60cb31c63388e3b3bc4e'),(86, '5609e939561c4d879541b83b2b4adfce6645a774970044cb8cfdc9eb957236bb'),(87, '58a08e6beedba45b008ada2b14e40840252e3337283576beec2975c7a188a6f8'),(88, '6799c474a2e34dac14666a021af28b1822355cf7c002a5dad1d44c5836ed027b'),(90, '1da146b2a46d8c624d16319e1e1a9c53ab80df0d9fb535ea9f255a96e2fcc7cf'),(92, '6abf15ccb4fee791f14c4b2bb9bbebbabbee25e4d618c4030afc5c81c0c950be'),(93, 'c428770a0f6d2b3f441c85c86799236fb688847cc833c6b8ba7a2c992b8e21bc'),(94, '70b380f340ee72d6102640021c0a15e1b1ecab7616dae0176056f4d7eef4a224'),(95, 'ca525183dd72ddbf46312b79bb4c6b1c0e86366abbd69952381ddea9a99f38b6'),(96, '23a9afda09e4cba2189485083fa990fe62ffb5cd9a66ef435f81eea491a1f9d2'),(97, '4944a995405acc45619b16ef32657ee0cefee89a62cf9bd7796f08acffd992df'),(98, 'c4a6c537f25050b3bc10868f66d32323d900aaef85d378c2aed8e821b99328ac'),(83, '9560d86e7d0516a8072f6ec8b51ce2a57983206d52cdae765735a83b4a329293'),(99, '79bcece8c431b6e2c8e63a64fac55935bb126d01275c2dca4fc416c14a8521e0'),(91, '0bed9a76631d745baa74ec50be962a9990c5f22fad490faff2bbd3aac262493f'),(109, 'e04f983786a1443981bbf7ee19458001d106a2a06f483d8165caf8345b6b5d2d'),(104, '30f68257670f80c9a2eb6acb0652e410e5b3710c26579aa70fb85b32acdb024b'),(106, 'aa4f6d51668d247746743d2b13557280f5cc8a45284f911b1021819f74d56f2a'),(110, '4a0246b5bf545539f031fe735121723e89d3807edca1de6ffe99fe759d1cecb8'),(108, 'eacc4fed47609e82641386a47672abe4d4521eff1090893806821a50cc2738a0'),(103, '348fef02eb9c8f155d90d72d008121df3dcc460151ad44540345b74da9ce6228'),(111, '1da79f34aed3ba3d0c93a467ba82929fce457cc5278c8dae5d94fefba0c08382'),(102, '9a4547458d8275e8ea51bb32c7788009265b744ab1515433e12fe29995755ecd'),(101, 'd680fb1d293d58eeb88b7b4464e6c8e22061305bd614de3b0ab5b9507f8011a5'),(100, '6460901bb05b9e0412b1dd526afc64928f723aba3ae56d60a95ead7e957b3bc0'),(112, '8e6eee7504b6cce01da9d7954efcf154398d1cbf57fc99d6b362d581f9907bbb'),(107, '31015b4c4d994b93f1c9906fbb285ca406e683643080dd37de076b2331d7079d'),(121, 'fe6a8d8479dd0f88ed1b41f32b06004d84bcdb5c56834b302a48a758ce72edf6'),(116, '75acb02a4efa0624163f5d6ede84ba031fda529e148d4f6658ecc3e9039d4635'),(117, '5cdc34087d7131491a49d97f23773b57f1918cd8f9e829e5cddf4cfd4d3ac258'),(118, '3d8864f56785e38dded5b5a20074202c3aa9257a026a364502cfb2dcd5632738'),(119, 'f6b81f7d2599cceadc00ee56a5fc6a8ac80e5e04127058778f9aaea89aad5e92'),(105, 'f5c791ec3f4377801bdf89ac08893724fcfe65c7c71a3ce244900fe5dadc6808'),(52, '155aba94d9dbac15e73db0f9c4d3f81e23da2f0bbeed2b509cf3c05ed55f0994'),(50, '316c7efc23ef6f99bb32eb60862d4ed3e03c37fcd95d779dcd99a863fb05ebaa'),(123, '8e43cec3db60b9682c60912c29c76092eaca220886e82d04fa70a27d3986f480'),(124, 'f98f94f63a1dfadd925d30eac417931c0f55e71279f85feab78a83fcb346da69'),(125, 'ce428bb692485e7b9fcfca752ec6badc3a335b0c0081a081dc159fb960cc5763'),(126, '748700682ad6f8082c0680a7f493d45e4f7a00ac79459eaa77297d1cc4aff389'),(127, '6806c9b3c19f20c4b2b57cffeedf2067379362e52702dcf6a9acd25115c99920'),(128, '1db3fbdf7511396f3aa42bb3296672b972c7afbae32ee3f687f6009bda0a2b4f'),(129, '23a0d6745d4f424e0b4115274b6b63c62160974de97cfe0dfb934a89c1cf825c'),(89, '3b001662fd11a7347e5c73a3c03af906cacb88080d3b9f5e4384945907904106'),(130, '8976c4c7c1a0bdc4c1419901dad42c8b8a32feed516154f49c9690306330e833'),(131, 'ff6970a5d1fb2aa9527a8960e42449646b112085dae4c260d33d903f0ca149b0'),(132, '88b2b7bc2119cde16ef3131648500b5875288121451c6a0ae5664ee201f0a0bf'),(133, '3278efb3229b29d9f8e914f97e6ec9bfcc0ae354ed74d170ebf8648329671331'),(136, '413c13f03a57d36628b8a1ceed93e5692bf193bd4244239e317bf1e6ab8cc613'),(137, '40160fe3ae7c681544254b7414b5d02b783c290ffc52b75399c7066c291dd03a'),(138, '390234295ddab6bc68a32dac38a14e8e5179b99b21c2931df7ecd070c82aff40'),(139, '0aa3c06247836728361a1de615d79bd8df2341eba2cddc531d065df7169e4604'),(142, 'd01a286ef439dd815ff3bf19e081be59c3db4cde32e9d7a92ed3842f59111d02'),(143, 'ab1ddc594a9fb66a4345d8d039e6c3b16f6fc15510fc206ef3e3e8673c97c4eb'),(145, 'b0b5d5eacfc5308bd214f03b1b10178e222331506564d045381425891bacb388'),(141, '8c5513d34813c02ebcb34cf60956f314998b6100ad32f32da52765480aaa4317'),(146, '9c376c383a30bf35ea371b6c367f6bb1ee6d73ae92f114d2f1d6f4730cab7d68'),(147, '032fd420bf48faf1bdf9f08d56f04226bb6c2fb5563a4739c2f234a57464e36d'),(148, '5f24bfa1a52193feb6f63a5ef9161dcb14683683899f19be96df2681fb22cd62'),(149, '189d3b4ce7822946ec88a069603b1993f3b5cbe34d6917ec88dd5cf41184ab79'),(152, 'c278d3a98a66a929777d27d5e980861035f883854d223927d37fae7ad7c0336a'),(153, '784ffdf3b94edfee51985f9fbb7922040976e44a22731aa477c93696cb939a27'),(154, 'b5e3c96b53277da76391d2bdee376ffd7b92f234a2901875439db713bec86122'),(155, '62c0264da81d0939ca0bde592620a9b90cd80fc2274ef29e5c28f64d63d8d9c3'),(156, '5f3a90d90984a8db0a44d7100561e904859e2c84baea07340d8a93edfb0f26e4'),(157, 'e8bafe2a878e1163936d9a54087acf0bce1d87a5484dfb260e12917b075c43cc'),(158, 'c33a7e14c31ad1771b457080bfcf5ca21509cc35e78f0f2898bae9254c2f1029'),(159, '891dbaf788128feaf64d11d9b5c40de9b0c5f05a460da04693c6211b114bc7eb'),(160, 'fb946b252e27b80c76e9da4e792725ff67381de65820ea68f01a9a04471d33b4'),(161, '39a26b54517eee25565607b1f0945e56a615312805af28c62e03d74214bf76ac'),(162, '17caf71971ee62c04cfac608fa9b0087f401e85b4f466b6f7d658802c8c80d0b'),(163, 'cb06301ed12a4442edb550b4ef336fe728bdb6593b868869574ac1e8666f422f'),(164, '191d367f22e229fb68817fad904db7651f370bccdfc175785a65f6daed90a219'),(165, '0822a14e730a3482d09af17cdea3d08a32cf24171f9ef4ffa23cfe5d6b7f9058'),(166, '5a1aab5123279f45db68e18c868483feb7b76b30d17af1b2680c4d88df7bd19f'),(167, '68399e3324c3510a4a6ac00d14a8e4b216094820fd9db9aa3a5c9f706dbf3ca3'),(174, 'ececd057cb4779cef52823083ec9c82961f3e8539190309aaf6bcf2e3a8bafb5'),(176, 'bc2c79132216e7d1a42d6a9792acf5273019bbc5f278fc3805c1356a1f02c1be'),(175, 'b400cbf0a846207e836229eca5667a963fbf690cce6db1f7c5eb1d8a77748c52'),(180, '9b4aba0ea051d5b0c122f5537c9c4094a90200d64927fb35e8f8b3ceb196a292'),(177, '3fed26fe66f5998ba29b91492cc7c14d786c6e93c9140b7a197c77fe1491d7ef'),(181, 'f8da30602603aac15013c16a7546c664a56c18b688d9ceb91f36cf73fb4e64fc'),(182, 'ad716eb41bbd9c20ccc843ce36d4556e180e65c615265d94bd601b9d3a00a9af'),(19, '374cc731fe422a43fc19262c6b52073139fcb32458e5151cd72ce7bf3b6e8e14'),(183, 'bc983f1b189100539bc9902a724f36690c7a0fde2e475acf36ca51caa768ab15'),(185, 'c92b5cb90377b0be5814df22b255860d7d6dd72e35bbde17410fbb4024836ec2'),(184, 'f0d266a770ca3af521e9a265de4f68ce9f23e93264967d82dee3e5667e9897cb'),(186, '110764f28095409fa7cc60d3fedaa648bc022b965d5170710c0c8393074a0195'),(187, '9a1414da05503812b30dd892c9d60b1d6afced61557450db206cd02316917ba1'),(188, '1bb14f4d8a5b64de886e7b78a3a3da304ae58901464ab586722dd5f84883206d'),(114, '52da7e00af315c442deb72a64749dfd96d8992bb148c5ea02ae3390d14e48270'),(115, 'd88c5bd0d4bbc624757a97b428b9f0004aacb9357c88b9b2a2079bdb90d207a3'),(189, '6b06da56ee416217ec12cb1b35a866a3610abaec3c6b23ad816357157bbcf650'),(190, '9b4a938e3710df3ad63ffce079464156d017254868344a09572a9a573f6c3e29'),(191, '0ee17ec8d7cf979b35b707b7cce870a3c56ff326368f17dfb31019bdcb9d10d7'),(192, 'e66fede9824574d4377015fe5a7c532ef40eb6dc31873a709891b8b9a39c45d1'),(193, '9ef2bc040e794fbafbc333406144064206254f5c62074f2c8882c29e57a789ee'),(194, '061e60ddf7b8c0af5672644ef84bb0011b8ab9510b9ef1b88546a07b9a14bad4')) AS data(id, token_hash)\nWHERE email_tokens.id = data.id\n")
   -> 0.0025s
-- change_column_null(:email_tokens, :token_hash, false, nil)
   -> 0.0003s
== 20210929215543 AddTokenHashToEmailToken: migrated (0.0055s) ================

== 20210930144333 AddChatEnabledToUserOptions: migrating ======================
-- add_column(:user_options, :chat_enabled, :boolean, {:default=>true, :null=>false})
   -> 0.0007s
== 20210930144333 AddChatEnabledToUserOptions: migrated (0.0011s) =============

== 20211005163152 AddScopeToEmailToken: migrating =============================
-- add_column(:email_tokens, :scope, :integer)
   -> 0.0004s
== 20211005163152 AddScopeToEmailToken: migrated (0.0014s) ====================

== 20211013092406 AddNormalizedEmailToUserEmail: migrating ====================
-- add_column(:user_emails, :normalized_email, :string)
   -> 0.0003s
-- execute("CREATE INDEX index_user_emails_on_normalized_email ON user_emails (LOWER(normalized_email))")
   -> 0.0035s
== 20211013092406 AddNormalizedEmailToUserEmail: migrated (0.0043s) ===========

== 20211015092047 AddsAutomationIdsIndexToPostCustomFields: migrating =========
-- add_index(:post_custom_fields, [:post_id, :value], {:unique=>true, :where=>"name = 'discourse_automation_ids'", :name=>:idx_post_custom_fields_discourse_automation_unique_id_partial})
   -> 0.0046s
== 20211015092047 AddsAutomationIdsIndexToPostCustomFields: migrated (0.0050s) 

== 20211015092048 MakeDiscourseAutomationIdAnArrayOnTopicCustomFields: migrating 
-- add_index(:topic_custom_fields, [:topic_id, :value], {:unique=>true, :where=>"name = 'discourse_automation_ids'", :name=>:idx_topic_custom_fields_discourse_automation_unique_id_partial})
   -> 0.0044s
== 20211015092048 MakeDiscourseAutomationIdAnArrayOnTopicCustomFields: migrated (0.0058s) 

== 20211015092049 AddsAutomationIdsIndexToUserCustomFields: migrating =========
-- add_index(:user_custom_fields, [:user_id, :value], {:unique=>true, :where=>"name = 'discourse_automation_ids'", :name=>:idx_user_custom_fields_discourse_automation_unique_id_partial})
   -> 0.0043s
== 20211015092049 AddsAutomationIdsIndexToUserCustomFields: migrated (0.0047s) 

== 20211018234219 RemoveEnableExperimentalImageUploaderSiteSetting: migrating =
-- execute("DELETE FROM site_settings\nWHERE name = 'enable_experimental_image_uploader'\n")
   -> 0.0002s
== 20211018234219 RemoveEnableExperimentalImageUploaderSiteSetting: migrated (0.0006s) 

== 20211019092048 RemoveCrawlImagesSiteSetting: migrating =====================
-- execute("DELETE\nFROM site_settings\nWHERE name = 'crawl_images';\n")
   -> 0.0002s
== 20211019092048 RemoveCrawlImagesSiteSetting: migrated (0.0005s) ============

== 20211019152356 PopulatePendingPostsCountColumn: migrating ==================
-- execute("WITH to_update AS (\n  SELECT COUNT(id) AS posts, created_by_id\n  FROM reviewables\n  WHERE type = 'ReviewableQueuedPost'\n    AND status = 0\n  GROUP BY created_by_id\n)\nUPDATE user_stats\nSET pending_posts_count = to_update.posts\nFROM to_update\nWHERE to_update.created_by_id = user_stats.user_id\n")
   -> 0.0006s
== 20211019152356 PopulatePendingPostsCountColumn: migrated (0.0025s) =========

== 20211022151713 CreateChatMessagePostConnections: migrating =================
-- create_table(:chat_message_post_connections)
   -> 0.0040s
-- add_index(:chat_message_post_connections, [:post_id, :chat_message_id], {:unique=>true, :name=>"chat_message_post_connections_index"})
   -> 0.0027s
== 20211022151713 CreateChatMessagePostConnections: migrated (0.0072s) ========

== 20211029145508 AddChatIsolatedToUserOptions: migrating =====================
-- add_column(:user_options, :chat_isolated, :boolean, {:null=>true})
   -> 0.0004s
== 20211029145508 AddChatIsolatedToUserOptions: migrated (0.0008s) ============

== 20211104141254 AddOnlyChatPushNotificationsToUserOptions: migrating ========
-- add_column(:user_options, :only_chat_push_notifications, :boolean, {:null=>true})
   -> 0.0003s
== 20211104141254 AddOnlyChatPushNotificationsToUserOptions: migrated (0.0007s) 

== 20211106085344 CreateAssociatedGroups: migrating ===========================
-- create_table(:associated_groups)
   -> 0.0067s
-- add_index(:associated_groups, [:provider_name, :provider_id], {:unique=>true, :name=>"associated_groups_provider_id"})
   -> 0.0026s
== 20211106085344 CreateAssociatedGroups: migrated (0.0098s) ==================

== 20211106085527 CreateUserAssociatedGroups: migrating =======================
-- create_table(:user_associated_groups)
   -> 0.0090s
-- add_index(:user_associated_groups, [:user_id, :associated_group_id], {:unique=>true, :name=>"index_user_associated_groups"})
   -> 0.0026s
== 20211106085527 CreateUserAssociatedGroups: migrated (0.0127s) ==============

== 20211106085605 CreateGroupAssociatedGroups: migrating ======================
-- create_table(:group_associated_groups)
   -> 0.0088s
-- add_index(:group_associated_groups, [:group_id, :associated_group_id], {:unique=>true, :name=>"index_group_associated_groups"})
   -> 0.0027s
== 20211106085605 CreateGroupAssociatedGroups: migrated (0.0121s) =============

== 20211116225901 AddDescriptionToTags: migrating =============================
-- add_column(:tags, :description, :string)
   -> 0.0004s
== 20211116225901 AddDescriptionToTags: migrated (0.0008s) ====================

== 20211119103353 AddsDiscourseAutomationUserGlobalNotice: migrating ==========
-- create_table(:discourse_automation_user_global_notices)
   -> 0.0072s
-- add_index(:discourse_automation_user_global_notices, [:user_id, :identifier], {:unique=>true, :name=>:idx_discourse_automation_user_global_notices})
   -> 0.0030s
== 20211119103353 AddsDiscourseAutomationUserGlobalNotice: migrated (0.0108s) =

== 20211119142000 AddCookedToChatMessages: migrating ==========================
-- add_column(:chat_messages, :cooked, :text)
   -> 0.0004s
-- add_column(:chat_messages, :cooked_version, :integer)
   -> 0.0003s
== 20211119142000 AddCookedToChatMessages: migrated (0.0011s) =================

== 20211123033311 ResetFirstUnreadPmAtOnUserStat: migrating ===================
-- execute("UPDATE user_stats us\nSET first_unread_pm_at = u.created_at\nFROM users u\nWHERE u.id = us.user_id\n")
   -> 0.0011s
== 20211123033311 ResetFirstUnreadPmAtOnUserStat: migrated (0.0015s) ==========

== 20211123144714 AddRecentSearches: migrating ================================
-- add_column(:user_options, :oldest_search_log_date, :timestamp, {:precision=>nil})
   -> 0.0008s
-- add_index(:search_logs, [:user_id, :created_at], {:where=>"user_id IS NOT NULL", :name=>"index_search_logs_on_user_id_and_created_at"})
   -> 0.0047s
== 20211123144714 AddRecentSearches: migrated (0.0060s) =======================

== 20211124161346 QueueInternalOneboxRebake: migrating ========================
== 20211124161346 QueueInternalOneboxRebake: migrated (0.0004s) ===============

== 20211129171229 CreateChatUploads: migrating ================================
-- create_table(:chat_uploads)
   -> 0.0037s
-- add_index(:chat_uploads, [:chat_message_id, :upload_id], {:unique=>true, :name=>"index_chat_uploads_on_chat_message_id_and_upload_id"})
   -> 0.0029s
== 20211129171229 CreateChatUploads: migrated (0.0071s) =======================

== 20211201171813 CreateChatReactions: migrating ==============================
-- create_table(:chat_message_reactions)
   -> 0.0065s
-- add_index(:chat_message_reactions, [:chat_message_id, :user_id, :emoji], {:unique=>true, :name=>:chat_message_reactions_index})
   -> 0.0028s
== 20211201171813 CreateChatReactions: migrated (0.0099s) =====================

== 20211201221028 MigrateEmailToNormalizedEmail: migrating ====================
-- execute("UPDATE user_emails\nSET normalized_email = REPLACE(REGEXP_REPLACE(email,'([+@].*)',''),'.','') || REGEXP_REPLACE(email, '[^@]*', '')\nWHERE (normalized_email IS NULL OR normalized_email <> (REPLACE(REGEXP_REPLACE(email,'([+@].*)',''),'.','') || REGEXP_REPLACE(email, '[^@]*', '')))\n  AND (id >= -2 AND id < 156)\n")
   -> 0.0026s
== 20211201221028 MigrateEmailToNormalizedEmail: migrated (0.0043s) ===========

== 20211206160211 CreateIndexOnEmailTokensTokenHash: migrating ================
-- add_index(:email_tokens, :token_hash, {:unique=>true, :name=>"index_email_tokens_on_token_hash"})
   -> 0.0031s
== 20211206160211 CreateIndexOnEmailTokensTokenHash: migrated (0.0037s) =======

== 20211206160212 DropTokenFromEmailTokens: migrating =========================
== 20211206160212 DropTokenFromEmailTokens: migrated (0.0016s) ================

== 20211207130646 AddDomainToInvites: migrating ===============================
-- add_column(:invites, :domain, :string)
   -> 0.0005s
== 20211207130646 AddDomainToInvites: migrated (0.0013s) ======================

== 20211210191830 CreateChatMentions: migrating ===============================
-- create_table(:chat_mentions)
   -> 0.0042s
-- add_index(:chat_mentions, [:chat_message_id, :user_id, :notification_id], {:unique=>true, :name=>"chat_mentions_index"})
   -> 0.0031s
== 20211210191830 CreateChatMentions: migrated (0.0079s) ======================

== 20211213060445 EmailTokensTokenToNullable: migrating =======================
== 20211213060445 EmailTokensTokenToNullable: migrated (0.0023s) ==============

== 20211213150607 AddChatSoundToUserOptions: migrating ========================
-- add_column(:user_options, :chat_sound, :string, {:null=>true})
   -> 0.0005s
== 20211213150607 AddChatSoundToUserOptions: migrated (0.0008s) ===============

== 20211216191224 RemoveAdvancedEditorPreviewSiteSetting: migrating ===========
-- execute("DELETE FROM site_settings WHERE name = 'enable_advanced_editor_preview_sync'")
   -> 0.0002s
== 20211216191224 RemoveAdvancedEditorPreviewSiteSetting: migrated (0.0005s) ==

== 20211217221026 AddNameToChatChannel: migrating =============================
-- add_column(:chat_channels, :name, :string, {:null=>true})
   -> 0.0003s
== 20211217221026 AddNameToChatChannel: migrated (0.0007s) ====================

== 20211220023034 RemoveExperimentalBackupUploaderSetting: migrating ==========
-- execute("DELETE FROM site_settings\nWHERE name = 'enable_experimental_backup_uploader'\n")
   -> 0.0002s
== 20211220023034 RemoveExperimentalBackupUploaderSetting: migrated (0.0005s) =

== 20211221164540 RemoveLimitForFancyTitleInTopics: migrating =================
-- change_column(:topics, :fancy_title, :string, {:limit=>nil})
   -> 0.0004s
== 20211221164540 RemoveLimitForFancyTitleInTopics: migrated (0.0008s) ========

== 20211222153716 AddDescriptionToChatChannels: migrating =====================
-- add_column(:chat_channels, :description, :text, {:null=>true})
   -> 0.0003s
== 20211222153716 AddDescriptionToChatChannels: migrated (0.0007s) ============

== 20211224010204 DropOldBookmarkColumns: migrating ===========================
== 20211224010204 DropOldBookmarkColumns: migrated (0.0024s) ==================

== 20211224011511 DeleteExperimentalComposerUploadSetting: migrating ==========
-- execute("DELETE FROM site_settings WHERE name = 'enable_experimental_composer_uploader'")
   -> 0.0003s
== 20211224011511 DeleteExperimentalComposerUploadSetting: migrated (0.0008s) =

== 20211224111749 NotNullNotificationLevelInCategoryUsers: migrating ==========
-- execute("DELETE FROM category_users WHERE notification_level IS NULL")
   -> 0.0002s
-- change_column_null(:category_users, :notification_level, false, nil)
   -> 0.0003s
== 20211224111749 NotNullNotificationLevelInCategoryUsers: migrated (0.0008s) =

== 20220104051326 ChangeChatChannelsTimestampColumnsToTimestampType: migrating 
-- change_column_default(:chat_channels, :created_at, nil)
   -> 0.0016s
-- change_column_default(:chat_channels, :updated_at, nil)
   -> 0.0012s
-- column_exists?(:chat_channels, :created_at, :timestamp)
   -> 0.0011s
-- change_column(:chat_channels, :created_at, :timestamp)
   -> 0.0003s
-- column_exists?(:chat_channels, :updated_at, :timestamp)
   -> 0.0010s
-- change_column(:chat_channels, :updated_at, :timestamp)
   -> 0.0003s
== 20220104051326 ChangeChatChannelsTimestampColumnsToTimestampType: migrated (0.0060s) 

== 20220105024605 AddTriggerForPolymorphicBookmarkColumnsToSyncData: migrating 
== 20220105024605 AddTriggerForPolymorphicBookmarkColumnsToSyncData: migrated (0.0005s) 

== 20220118065658 AddConstraintsToUserStat: migrating =========================
-- execute("UPDATE user_stats\nSET post_count = 0\nWHERE post_count < 0\n")
   -> 0.0002s
-- execute("UPDATE user_stats\nSET topic_count = 0\nWHERE topic_count < 0\n")
   -> 0.0001s
-- execute("ALTER TABLE user_stats ADD CONSTRAINT topic_count_positive CHECK (topic_count >= 0)")
   -> 0.0004s
-- execute("ALTER TABLE user_stats ADD CONSTRAINT post_count_positive CHECK (post_count >= 0)")
   -> 0.0003s
== 20220118065658 AddConstraintsToUserStat: migrated (0.0014s) ================

== 20220119170535 AddChatRetentionFieldsToUserOptions: migrating ==============
-- add_column(:user_options, :dismissed_channel_retention_reminder, :boolean, {:null=>true})
   -> 0.0004s
-- add_column(:user_options, :dismissed_dm_retention_reminder, :boolean, {:null=>true})
   -> 0.0002s
== 20220119170535 AddChatRetentionFieldsToUserOptions: migrated (0.0010s) =====

== 20220124003259 AddEmailFromAliasToGroups: migrating ========================
-- add_column(:groups, :email_from_alias, :string, {:null=>true})
   -> 0.0003s
== 20220124003259 AddEmailFromAliasToGroups: migrated (0.0007s) ===============

== 20220125052845 FixTopicLikeCountIncludingWhispers: migrating ===============
== 20220125052845 FixTopicLikeCountIncludingWhispers: migrated (0.0016s) ======

== 20220126052157 ChangeSegmentCjkSiteSetting: migrating ======================
-- execute("UPDATE site_settings\nSET name = 'search_tokenize_chinese'\nWHERE name = 'search_tokenize_chinese_japanese_korean'\n")
   -> 0.0002s
-- execute("DELETE FROM site_settings\nWHERE name = 'search_tokenize_chinese_japanese_korean'\n")
   -> 0.0001s
== 20220126052157 ChangeSegmentCjkSiteSetting: migrated (0.0007s) =============

== 20220130192155 SetUseEmailForUsernameAndNameSuggestionsOnExistingSites: migrating 
-- execute("INSERT INTO site_settings(name, data_type, value, created_at, updated_at)\nVALUES('use_email_for_username_and_name_suggestions', 5, 't', NOW(), NOW())\nON CONFLICT (name) DO NOTHING\n")
   -> 0.0002s
== 20220130192155 SetUseEmailForUsernameAndNameSuggestionsOnExistingSites: migrated (0.0010s) 

== 20220202223955 MigrateSelectableAvatarsEnabled: migrating ==================
-- execute("UPDATE site_settings AS s\n  SET value =\n    CASE WHEN t.value = 't' THEN 'no_one'\n    ELSE 'disabled'\n    END,\n  data_type = 7,\n  name = 'selectable_avatars_mode'\n  FROM site_settings t\n  WHERE s.id = t.id AND s.name = 'selectable_avatars_enabled'\n")
   -> 0.0003s
== 20220202223955 MigrateSelectableAvatarsEnabled: migrated (0.0006s) =========

== 20220202225716 AddExternalIdToTopics: migrating ============================
-- add_column(:topics, :external_id, :string, {:null=>true})
   -> 0.0004s
-- add_index(:topics, :external_id, {:unique=>true, :where=>"external_id IS NOT NULL", :name=>"index_topics_on_external_id"})
   -> 0.0067s
== 20220202225716 AddExternalIdToTopics: migrated (0.0077s) ===================

== 20220203204002 CreateChatDraftsTable: migrating ============================
-- create_table(:chat_drafts)
   -> 0.0065s
== 20220203204002 CreateChatDraftsTable: migrated (0.0070s) ===================

== 20220203204003 MigrateDraftsToChatDrafts: migrating ========================
-- execute("INSERT INTO chat_drafts(user_id, chat_channel_id, data, created_at, updated_at)\nSELECT user_id, SUBSTRING(draft_key, LENGTH('chat_') + 1)::integer chat_channel_id, data, created_at, updated_at\nFROM drafts\nWHERE draft_key LIKE 'chat_%'\n")
   -> 0.0005s
-- execute("DELETE FROM drafts\nWHERE draft_key LIKE 'chat_%'\n")
   -> 0.0001s
== 20220203204003 MigrateDraftsToChatDrafts: migrated (0.0010s) ===============

== 20220209210449 AddBookmarkAutoDeletePreferenceToUserOption: migrating ======
-- add_column(:user_options, :bookmark_auto_delete_preference, :integer, {:default=>3, :null=>false})
   -> 0.0006s
== 20220209210449 AddBookmarkAutoDeletePreferenceToUserOption: migrated (0.0010s) 

== 20220214224506 ResetCustomEmojiPostBakesVersionSecureFix: migrating ========
== 20220214224506 ResetCustomEmojiPostBakesVersionSecureFix: migrated (0.0005s) 

== 20220214233625 AddBounceErrorCodeToEmailLog: migrating =====================
-- add_column(:email_logs, :bounce_error_code, :string, {:null=>true})
   -> 0.0004s
== 20220214233625 AddBounceErrorCodeToEmailLog: migrated (0.0007s) ============

== 20220215015538 DropUserStatCountConstraints: migrating =====================
-- execute("ALTER TABLE user_stats DROP CONSTRAINT topic_count_positive")
   -> 0.0003s
-- execute("ALTER TABLE user_stats DROP CONSTRAINT post_count_positive")
   -> 0.0002s
== 20220215015538 DropUserStatCountConstraints: migrated (0.0008s) ============

== 20220218023859 AddStatusToChatChannel: migrating ===========================
-- add_column(:chat_channels, :status, :integer, {:default=>0, :null=>false})
   -> 0.0007s
-- add_index(:chat_channels, :status, {:name=>"index_chat_channels_on_status"})
   -> 0.0031s
== 20220218023859 AddStatusToChatChannel: migrated (0.0044s) ==================

== 20220220234155 ConformBounceErrorCode: migrating ===========================
== 20220220234155 ConformBounceErrorCode: migrated (0.0008s) ==================

== 20220228051724 CreateChatChannelArchiveTable: migrating ====================
-- create_table(:chat_channel_archives)
   -> 0.0067s
-- add_index(:chat_channel_archives, :chat_channel_id, {:name=>"index_chat_channel_archives_on_chat_channel_id"})
   -> 0.0028s
== 20220228051724 CreateChatChannelArchiveTable: migrated (0.0100s) ===========

== 20220302163246 UpdateAvatarServiceDomain: migrating ========================
== 20220302163246 UpdateAvatarServiceDomain: migrated (0.0006s) ===============

== 20220302171443 RebakeOldAvatarServiceUrls: migrating =======================
== 20220302171443 RebakeOldAvatarServiceUrls: migrated (0.0011s) ==============

== 20220304162250 EnableUnaccentExtension: migrating ==========================
-- enable_extension("unaccent")
   -> 0.0033s
== 20220304162250 EnableUnaccentExtension: migrated (0.0038s) =================

== 20220308165620 AddUserCountToChatChannel: migrating ========================
-- add_column(:chat_channels, :user_count, :integer, {:null=>true, :default=>0})
   -> 0.0006s
-- change_column_null(:chat_channels, :user_count, false, nil)
   -> 0.0002s
== 20220308165620 AddUserCountToChatChannel: migrated (0.0012s) ===============

== 20220308201942 CreateUploadReferences: migrating ===========================
-- create_table(:upload_references)
   -> 0.0119s
-- add_index(:upload_references, [:upload_id, :target_type, :target_id], {:unique=>true, :name=>"index_upload_references_on_upload_and_target"})
   -> 0.0022s
== 20220308201942 CreateUploadReferences: migrated (0.0147s) ==================

== 20220309132719 CopyPostUploadsToUploadReferences: migrating ================
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT post_uploads.upload_id, 'Post', post_uploads.post_id, uploads.created_at, uploads.updated_at\nFROM post_uploads\nJOIN uploads ON uploads.id = post_uploads.upload_id\nON CONFLICT DO NOTHING\n")
   -> 0.0014s
== 20220309132719 CopyPostUploadsToUploadReferences: migrated (0.0018s) =======

== 20220309132720 CopyPostUploadsToUploadReferencesForSync: migrating =========
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT upload_id, 'Post', post_id, NOW(), NOW()\nFROM post_uploads\nON CONFLICT DO NOTHING\n")
   -> 0.0004s
== 20220309132720 CopyPostUploadsToUploadReferencesForSync: migrated (0.0008s) 

== 20220309174820 AddLastMessageCreatedAtToChatChannels: migrating ============
-- add_column(:chat_channels, :last_message_sent_at, :timestamp, {:default=>#<Proc:0x0000fb5cceada2b0 /var/www/discourse/plugins/chat/db/migrate/20220309174820_add_last_message_created_at_to_chat_channels.rb:4 (lambda)>, :precision=>nil})
   -> 0.0005s
-- change_column_null(:chat_channels, :last_message_sent_at, false, nil)
   -> 0.0002s
== 20220309174820 AddLastMessageCreatedAtToChatChannels: migrated (0.0012s) ===

== 20220316150247 ResetBookmarksReminderLastSentAt: migrating =================
== 20220316150247 ResetBookmarksReminderLastSentAt: migrated (0.0007s) ========

== 20220321235638 DropChatMessagePostConnectionsTable: migrating ==============
== 20220321235638 DropChatMessagePostConnectionsTable: migrated (0.0016s) =====

== 20220322024216 AddBookmarkPolymorphicColumns: migrating ====================
-- column_exists?(:bookmarks, :bookmarkable_id)
   -> 0.0015s
-- add_column(:bookmarks, :bookmarkable_id, :integer)
   -> 0.0005s
-- column_exists?(:bookmarks, :bookmarkable_type)
   -> 0.0011s
-- add_column(:bookmarks, :bookmarkable_type, :string)
   -> 0.0037s
-- index_exists?(:bookmarks, [:user_id, :bookmarkable_type, :bookmarkable_id])
   -> 0.0024s
-- add_index(:bookmarks, [:user_id, :bookmarkable_type, :bookmarkable_id], {:name=>"idx_bookmarks_user_polymorphic_unique", :unique=>true})
   -> 0.0029s
== 20220322024216 AddBookmarkPolymorphicColumns: migrated (0.0129s) ===========

== 20220323141645 RemovePollingSiteSettings: migrating ========================
-- execute("DELETE FROM site_settings WHERE name = 'enable_long_polling'")
   -> 0.0002s
-- execute("DELETE FROM site_settings WHERE name = 'long_polling_interval'")
   -> 0.0001s
== 20220323141645 RemovePollingSiteSettings: migrated (0.0007s) ===============

== 20220324062937 IgnoreChannelWideMentionToUserOptions: migrating ============
-- add_column(:user_options, :ignore_channel_wide_mention, :boolean, {:null=>true})
   -> 0.0005s
== 20220324062937 IgnoreChannelWideMentionToUserOptions: migrated (0.0009s) ===

== 20220325064954 MakeSomeBookmarkColumnsNullable: migrating ==================
-- change_column_null(:bookmarks, :post_id, true, nil)
   -> 0.0002s
-- execute("ALTER TABLE bookmarks ADD CONSTRAINT enforce_post_id_or_bookmarkable CHECK (\n      (post_id IS NOT NULL) OR (bookmarkable_id IS NOT NULL AND bookmarkable_type IS NOT NULL)\n    )")
   -> 0.0003s
== 20220325064954 MakeSomeBookmarkColumnsNullable: migrated (0.0009s) =========

== 20220328142120 CreateUserChatMessageStatuses: migrating ====================
-- create_table(:chat_message_email_statuses)
   -> 0.0040s
-- add_index(:chat_message_email_statuses, [:user_id, :chat_message_id], {:name=>"chat_message_email_status_user_message_index"})
   -> 0.0025s
-- add_index(:chat_message_email_statuses, :status, {:name=>"index_chat_message_email_statuses_on_status"})
   -> 0.0023s
-- add_column(:user_options, :chat_email_frequency, :integer, {:default=>1, :null=>false})
   -> 0.0008s
-- add_column(:user_options, :last_emailed_for_chat, :timestamp, {:null=>true, :precision=>nil})
   -> 0.0003s
== 20220328142120 CreateUserChatMessageStatuses: migrated (0.0106s) ===========

== 20220330160740 CleanupSelectableAvatarsData: migrating =====================
-- execute("DELETE FROM site_settings\nWHERE name = 'selectable_avatars_urls'\n")
   -> 0.0002s
== 20220330160740 CleanupSelectableAvatarsData: migrated (0.0006s) ============

== 20220330160747 CopySiteSettingsUploadsToUploadReferences: migrating ========
-- execute("WITH site_settings_uploads AS (\n  SELECT id, raw_upload_id::integer AS upload_id\n  FROM (\n    SELECT id, unnest(string_to_array(value, '|')) AS raw_upload_id\n    FROM site_settings\n    WHERE data_type = 17\n  ) raw\n  WHERE raw_upload_id ~ '^d+$'\n  UNION\n  SELECT id, value::integer\n  FROM site_settings\n  WHERE data_type = 18 AND value != ''\n)\nINSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT site_settings_uploads.upload_id, 'SiteSetting', site_settings_uploads.id, uploads.created_at, uploads.updated_at\nFROM site_settings_uploads\nJOIN uploads ON uploads.id = site_settings_uploads.upload_id\nON CONFLICT DO NOTHING\n")
   -> 0.0009s
== 20220330160747 CopySiteSettingsUploadsToUploadReferences: migrated (0.0013s) 

== 20220330160751 CopyBadgesUploadsToUploadReferences: migrating ==============
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT badges.image_upload_id, 'Badge', badges.id, uploads.created_at, uploads.updated_at\nFROM badges\nJOIN uploads ON uploads.id = badges.image_upload_id\nWHERE badges.image_upload_id IS NOT NULL\nON CONFLICT DO NOTHING\n")
   -> 0.0004s
== 20220330160751 CopyBadgesUploadsToUploadReferences: migrated (0.0008s) =====

== 20220330160754 CopyGroupsUploadsToUploadReferences: migrating ==============
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT groups.flair_upload_id, 'Group', groups.id, uploads.created_at, uploads.updated_at\nFROM groups\nJOIN uploads ON uploads.id = groups.flair_upload_id\nWHERE groups.flair_upload_id IS NOT NULL\nON CONFLICT DO NOTHING\n")
   -> 0.0005s
== 20220330160754 CopyGroupsUploadsToUploadReferences: migrated (0.0009s) =====

== 20220330160757 CopyUserExportsUploadsToUploadReferences: migrating =========
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT user_exports.upload_id, 'UserExport', user_exports.id, uploads.created_at, uploads.updated_at\nFROM user_exports\nJOIN uploads ON uploads.id = user_exports.upload_id\nON CONFLICT DO NOTHING\n")
   -> 0.0005s
== 20220330160757 CopyUserExportsUploadsToUploadReferences: migrated (0.0008s) 

== 20220330164740 CopyThemeFieldsUploadsToUploadReferences: migrating =========
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT theme_fields.upload_id, 'ThemeField', theme_fields.id, uploads.created_at, uploads.updated_at\nFROM theme_fields\nJOIN uploads ON uploads.id = theme_fields.upload_id\nWHERE type_id = 2\nON CONFLICT DO NOTHING\n")
   -> 0.0005s
== 20220330164740 CopyThemeFieldsUploadsToUploadReferences: migrated (0.0008s) 

== 20220331204447 CreateSitemapsTable: migrating ==============================
-- create_table(:sitemaps, {:if_not_exists=>true})
   -> 0.0061s
-- add_index(:sitemaps, :name, {:unique=>true, :if_not_exists=>true, :name=>"index_sitemaps_on_name"})
   -> 0.0023s
== 20220331204447 CreateSitemapsTable: migrated (0.0090s) =====================

== 20220401130745 CreateCategoryRequiredTagGroups: migrating ==================
-- create_table(:category_required_tag_groups)
   -> 0.0038s
-- add_index(:category_required_tag_groups, [:category_id, :tag_group_id], {:name=>"idx_category_required_tag_groups", :unique=>true})
   -> 0.0024s
-- execute("INSERT INTO category_required_tag_groups\n(category_id, tag_group_id, min_count, updated_at, created_at)\nSELECT c.id, c.required_tag_group_id, c.min_tags_from_required_group, NOW(), NOW()\nFROM categories c\nINNER JOIN tag_groups tg ON tg.id = c.required_tag_group_id\nWHERE tg.id IS NOT NULL\n")
   -> 0.0007s
== 20220401130745 CreateCategoryRequiredTagGroups: migrated (0.0076s) =========

== 20220401140745 DropCategoryRequiredTagGroupColumns: migrating ==============
== 20220401140745 DropCategoryRequiredTagGroupColumns: migrated (0.0026s) =====

== 20220404195635 CopyCategoriesUploadsToUploadReferences: migrating ==========
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT categories.uploaded_logo_id, 'Category', categories.id, uploads.created_at, uploads.updated_at\nFROM categories\nJOIN uploads ON uploads.id = categories.uploaded_logo_id\nWHERE categories.uploaded_logo_id IS NOT NULL\nON CONFLICT DO NOTHING\n")
   -> 0.0006s
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT categories.uploaded_background_id, 'Category', categories.id, uploads.created_at, uploads.updated_at\nFROM categories\nJOIN uploads ON uploads.id = categories.uploaded_background_id\nWHERE categories.uploaded_background_id IS NOT NULL\nON CONFLICT DO NOTHING\n")
   -> 0.0004s
== 20220404195635 CopyCategoriesUploadsToUploadReferences: migrated (0.0014s) =

== 20220404201949 CopyCustomEmojisUploadsToUploadReferences: migrating ========
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT custom_emojis.upload_id, 'CustomEmoji', custom_emojis.id, uploads.created_at, uploads.updated_at\nFROM custom_emojis\nJOIN uploads ON uploads.id = custom_emojis.upload_id\nWHERE custom_emojis.upload_id IS NOT NULL\nON CONFLICT DO NOTHING\n")
   -> 0.0006s
== 20220404201949 CopyCustomEmojisUploadsToUploadReferences: migrated (0.0009s) 

== 20220404203356 CopyUserProfilesUploadsToUploadReferences: migrating ========
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT user_profiles.profile_background_upload_id, 'UserProfile', user_profiles.user_id, uploads.created_at, uploads.updated_at\nFROM user_profiles\nJOIN uploads ON uploads.id = user_profiles.profile_background_upload_id\nWHERE user_profiles.profile_background_upload_id IS NOT NULL\nON CONFLICT DO NOTHING\n")
   -> 0.0007s
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT user_profiles.card_background_upload_id, 'UserProfile', user_profiles.user_id, uploads.created_at, uploads.updated_at\nFROM user_profiles\nJOIN uploads ON uploads.id = user_profiles.card_background_upload_id\nWHERE user_profiles.card_background_upload_id IS NOT NULL\nON CONFLICT DO NOTHING\n")
   -> 0.0004s
== 20220404203356 CopyUserProfilesUploadsToUploadReferences: migrated (0.0015s) 

== 20220404204439 CopyUserAvatarsUploadsToUploadReferences: migrating =========
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT user_avatars.custom_upload_id, 'UserAvatar', user_avatars.id, uploads.created_at, uploads.updated_at\nFROM user_avatars\nJOIN uploads ON uploads.id = user_avatars.custom_upload_id\nWHERE user_avatars.custom_upload_id IS NOT NULL\nON CONFLICT DO NOTHING\n")
   -> 0.0007s
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT user_avatars.gravatar_upload_id, 'UserAvatar', user_avatars.id, uploads.created_at, uploads.updated_at\nFROM user_avatars\nJOIN uploads ON uploads.id = user_avatars.gravatar_upload_id\nWHERE user_avatars.gravatar_upload_id IS NOT NULL\nON CONFLICT DO NOTHING\n")
   -> 0.0004s
== 20220404204439 CopyUserAvatarsUploadsToUploadReferences: migrated (0.0015s) 

== 20220404212716 CopyThemeSettingsUploadsToUploadReferences: migrating =======
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT theme_settings.value::int, 'ThemeSetting', theme_settings.id, uploads.created_at, uploads.updated_at\nFROM theme_settings\nJOIN uploads ON uploads.id = theme_settings.value::int\nWHERE data_type = 6 AND theme_settings.value IS NOT NULL AND theme_settings.value != ''\nON CONFLICT DO NOTHING\n")
   -> 0.0004s
== 20220404212716 CopyThemeSettingsUploadsToUploadReferences: migrated (0.0007s) 

== 20220407195246 RemoveCategoryRequiredTagGroupsWithoutTagGroups: migrating ==
-- execute("DELETE FROM category_required_tag_groups\nWHERE id IN (\n  SELECT crtg.id\n  FROM category_required_tag_groups crtg\n  LEFT OUTER JOIN tag_groups tg ON crtg.tag_group_id = tg.id\n  WHERE tg.id IS NULL\n)\n")
   -> 0.0005s
== 20220407195246 RemoveCategoryRequiredTagGroupsWithoutTagGroups: migrated (0.0009s) 

== 20220419124720 ConvertRecurrenceToCustomField: migrating ===================
== 20220419124720 ConvertRecurrenceToCustomField: migrated (0.0004s) ==========

== 20220428025825 AddEnableExperimentalSidebarToUserOptions: migrating ========
-- add_column(:user_options, :enable_experimental_sidebar, :boolean, {:default=>false})
   -> 0.0008s
== 20220428025825 AddEnableExperimentalSidebarToUserOptions: migrated (0.0011s) 

== 20220428094026 CreatePostHotlinkedMedia: migrating =========================
-- execute("CREATE TYPE hotlinked_media_status AS ENUM('downloaded', 'too_large', 'download_failed', 'upload_create_failed')\n")
   -> 0.0004s
-- create_table(:post_hotlinked_media)
   -> 0.0059s
-- execute("CREATE UNIQUE INDEX index_post_hotlinked_media_on_post_id_and_url_md5\nON post_hotlinked_media (post_id, md5(url));\n")
   -> 0.0025s
-- execute("INSERT INTO post_hotlinked_media (post_id, url, status, upload_id, created_at, updated_at)\nSELECT\n  post_id,\n  obj.key AS url,\n  'downloaded',\n  obj.value::bigint AS upload_id,\n  pcf.created_at,\n  pcf.updated_at\nFROM post_custom_fields pcf\nJOIN json_each_text(pcf.value::json) obj ON true\nJOIN uploads ON obj.value::bigint = uploads.id\nWHERE name='downloaded_images'\nAND pcf.value LIKE '{%' -- JSON Object\nON CONFLICT (post_id, md5(url::text)) DO NOTHING\n")
   -> 0.0020s
-- execute("INSERT INTO post_hotlinked_media (post_id, url, status, upload_id, created_at, updated_at)\nSELECT\n  post_id,\n  url.value,\n  'download_failed',\n  NULL,\n  pcf.created_at,\n  pcf.updated_at\nFROM post_custom_fields pcf\nJOIN json_array_elements_text(pcf.value::json) url ON true\nWHERE name='broken_images'\nAND pcf.value LIKE '[%' -- JSON Array\nON CONFLICT (post_id, md5(url::text)) DO NOTHING\n")
   -> 0.0004s
-- execute("INSERT INTO post_hotlinked_media (post_id, url, status, upload_id, created_at, updated_at)\nSELECT\n  post_id,\n  url.value,\n  'too_large',\n  NULL,\n  pcf.created_at,\n  pcf.updated_at\nFROM post_custom_fields pcf\nJOIN json_array_elements_text(pcf.value::json) url ON true\nWHERE name='large_images'\nAND pcf.value LIKE '[%' -- JSON Array\nON CONFLICT (post_id, md5(url::text)) DO NOTHING\n")
   -> 0.0003s
== 20220428094026 CreatePostHotlinkedMedia: migrated (0.0122s) ================

== 20220428094027 FixPostHotlinkedMediaIndex: migrating =======================
-- execute("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS index_post_hotlinked_media_on_post_id_and_url_md5\nON post_hotlinked_media (post_id, md5(url));\n")
   -> 0.0003s
-- execute("DROP INDEX CONCURRENTLY IF EXISTS index_post_hotlinked_media_on_post_id_and_url;\n")
   -> 0.0002s
== 20220428094027 FixPostHotlinkedMediaIndex: migrated (0.0015s) ==============

== 20220429164301 DeleteHotlinkedImageCustomFields: migrating =================
-- execute("DELETE FROM post_custom_fields\nWHERE name IN (\n  'downloaded_images',\n  'broken_images',\n  'large_images'\n)\n")
   -> 0.0004s
-- execute("DROP INDEX CONCURRENTLY IF EXISTS post_custom_field_broken_images_idx\n")
   -> 0.0048s
-- execute("DROP INDEX CONCURRENTLY IF EXISTS post_custom_field_downloaded_images_idx\n")
   -> 0.0046s
-- execute("DROP INDEX CONCURRENTLY IF EXISTS post_custom_field_large_images_idx\n")
   -> 0.0042s
== 20220429164301 DeleteHotlinkedImageCustomFields: migrated (0.0146s) ========

== 20220504080457 DropOldChatMessagePostIdActionCodeColumns: migrating ========
== 20220504080457 DropOldChatMessagePostIdActionCodeColumns: migrated (0.0022s) 

== 20220505133851 MigrateCustomGroupDeletionLogs: migrating ===================
== 20220505133851 MigrateCustomGroupDeletionLogs: migrated (0.0008s) ==========

== 20220505191131 AddLastSeenReviewableIdToUser: migrating ====================
-- add_column(:users, :last_seen_reviewable_id, :integer)
   -> 0.0004s
== 20220505191131 AddLastSeenReviewableIdToUser: migrated (0.0007s) ===========

== 20220506221447 SetPmTagsAllowedForGroupsDefault: migrating =================
== 20220506221447 SetPmTagsAllowedForGroupsDefault: migrated (0.0004s) ========

== 20220510131525 RemoveAllowStaffToTagPmsSiteSetting: migrating ==============
-- execute("DELETE FROM site_settings WHERE name = 'allow_staff_to_tag_pms'")
   -> 0.0002s
== 20220510131525 RemoveAllowStaffToTagPmsSiteSetting: migrated (0.0005s) =====

== 20220512011522 BackfillPolymorphicBookmarksAndMakeDefault: migrating =======
== 20220512011522 BackfillPolymorphicBookmarksAndMakeDefault: migrated (0.0016s) 

== 20220512011531 BackfillPolymorphicBookmarks: migrating =====================
== 20220512011531 BackfillPolymorphicBookmarks: migrated (0.0007s) ============

== 20220516142658 RemoveEmailStatusesTable: migrating =========================
-- remove_index(:chat_message_email_statuses, :status)
   -> 0.0020s
-- remove_index(:chat_message_email_statuses, [:user_id, :chat_message_id])
   -> 0.0014s
== 20220516142658 RemoveEmailStatusesTable: migrated (0.0047s) ================

== 20220518140004 TrackLastUnreadMentionWhenEmailed: migrating ================
-- add_column(:user_chat_channel_memberships, :last_unread_mention_when_emailed_id, :integer)
   -> 0.0005s
== 20220518140004 TrackLastUnreadMentionWhenEmailed: migrated (0.0009s) =======

== 20220518180642 RemoveUserOptionLastEmailedAt: migrating ====================
-- remove_column(:user_options, :last_emailed_for_chat, :datetime)
   -> 0.0004s
== 20220518180642 RemoveUserOptionLastEmailedAt: migrated (0.0008s) ===========

== 20220519190829 CreateUserStatuses: migrating ===============================
-- create_table(:user_statuses, {:id=>false})
   -> 0.0078s
== 20220519190829 CreateUserStatuses: migrated (0.0085s) ======================

== 20220526135414 RemoveCorruptedLastReadMessageId: migrating =================
-- execute("DELETE FROM user_chat_channel_memberships uccm\nWHERE NOT EXISTS (\n  SELECT FROM chat_channels cc\n  WHERE cc.id = uccm.chat_channel_id\n);\n")
   -> 0.0008s
-- execute("DELETE FROM chat_messages cm\nWHERE NOT EXISTS (\n  SELECT FROM chat_channels cc\n  WHERE cc.id = cm.chat_channel_id\n);\n")
   -> 0.0004s
-- execute("WITH highest_channel_message_id AS (\n  SELECT chat_channel_id, max(chat_messages.id) as highest_id\n  FROM chat_messages\n  GROUP BY chat_channel_id\n)\nUPDATE user_chat_channel_memberships uccm\nSET last_read_message_id = highest_channel_message_id.highest_id\nFROM highest_channel_message_id\nWHERE highest_channel_message_id.chat_channel_id = uccm.chat_channel_id\nAND uccm.last_read_message_id IS NOT NULL\nAND uccm.last_read_message_id NOT IN (\n  SELECT id FROM chat_messages WHERE chat_messages.chat_channel_id = uccm.chat_channel_id\n)\n")
   -> 0.0005s
-- execute("UPDATE chat_messages cm\nSET in_reply_to_id = NULL\nWHERE NOT EXISTS (\n  SELECT FROM chat_messages cm2\n  WHERE cm.in_reply_to_id = cm2.id\n);\n")
   -> 0.0002s
-- execute("DELETE FROM chat_message_revisions cmr\nWHERE NOT EXISTS (\n  SELECT FROM chat_messages cm\n  WHERE cm.id = cmr.chat_message_id\n);\n")
   -> 0.0004s
-- execute("DELETE FROM chat_message_reactions cmr\nWHERE NOT EXISTS (\n  SELECT FROM chat_messages cm\n  WHERE cm.id = cmr.chat_message_id\n);\n")
   -> 0.0004s
-- execute("DELETE FROM bookmarks b\nWHERE b.bookmarkable_type = 'ChatMessage'\nAND NOT EXISTS (\n  SELECT FROM chat_messages cm\n  WHERE cm.id = b.bookmarkable_id\n);\n")
   -> 0.0003s
-- execute("DELETE FROM chat_mentions\nWHERE NOT EXISTS (\n  SELECT FROM chat_messages cm\n  WHERE cm.id = chat_mentions.chat_message_id\n);\n")
   -> 0.0004s
-- execute("DELETE FROM chat_webhook_events cwe\nWHERE NOT EXISTS (\n  SELECT FROM chat_messages cm\n  WHERE cm.id = cwe.chat_message_id\n);\n")
   -> 0.0003s
-- execute("DELETE FROM chat_uploads\nWHERE NOT EXISTS (\n  SELECT FROM chat_messages cm\n  WHERE cm.id = chat_uploads.chat_message_id\n);\n")
   -> 0.0004s
== 20220526135414 RemoveCorruptedLastReadMessageId: migrated (0.0048s) ========

== 20220526203356 CopyUserUploadsToUploadReferences: migrating ================
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT users.uploaded_avatar_id, 'User', users.id, uploads.created_at, uploads.updated_at\nFROM users\nJOIN uploads ON uploads.id = users.uploaded_avatar_id\nWHERE users.uploaded_avatar_id IS NOT NULL\nON CONFLICT DO NOTHING\n")
   -> 0.0008s
== 20220526203356 CopyUserUploadsToUploadReferences: migrated (0.0012s) =======

== 20220531105951 DropUserChatChannelLastReads: migrating =====================
== 20220531105951 DropUserChatChannelLastReads: migrated (0.0016s) ============

== 20220606061813 AddSmtpTransactionResponseToEmailLogs: migrating ============
-- add_column(:email_logs, :smtp_transaction_response, :string, {:null=>true, :limit=>500})
   -> 0.0005s
== 20220606061813 AddSmtpTransactionResponseToEmailLogs: migrated (0.0010s) ===

== 20220607150432 DisallowNullEmojiOnUserStatus: migrating ====================
-- execute("UPDATE user_statuses SET emoji = 'speech_balloon'")
   -> 0.0004s
-- change_column(:user_statuses, :emoji, :string, {:null=>false})
   -> 0.0003s
== 20220607150432 DisallowNullEmojiOnUserStatus: migrated (0.0011s) ===========
== 20220617151846 RenameDefaultCategoriesRegularSetting: migrating ============
-- execute("UPDATE site_settings\nSET name = 'default_categories_normal'\nWHERE name = 'default_categories_regular'\n")
   -> 0.0002s
== 20220617151846 RenameDefaultCategoriesRegularSetting: migrated (0.0005s) ===

== 20220621164914 DropFlairUrlFromGroups: migrating ===========================
== 20220621164914 DropFlairUrlFromGroups: migrated (0.0014s) ==================

== 20220628031850 CreateSidebarSectionLinks: migrating ========================
-- create_table(:sidebar_section_links)
   -> 0.0161s
-- add_index(:sidebar_section_links, [:user_id, :linkable_type, :linkable_id], {:unique=>true, :name=>"idx_unique_sidebar_section_links"})
   -> 0.0026s
== 20220628031850 CreateSidebarSectionLinks: migrated (0.0193s) ===============

== 20220629190633 AutoJoinUsersToChannels: migrating ==========================
-- add_column(:chat_channels, :auto_join_users, :boolean, {:null=>false, :default=>false})
   -> 0.0007s
== 20220629190633 AutoJoinUsersToChannels: migrated (0.0011s) =================

== 20220630074200 DropChatIsolatedFromUserOptions: migrating ==================
== 20220630074200 DropChatIsolatedFromUserOptions: migrated (0.0015s) =========

== 20220701195731 ConvertChatableTopicsToCategories: migrating ================
== 20220701195731 ConvertChatableTopicsToCategories: migrated (0.0019s) =======

== 20220706114835 AddJoinModeToChannelMemberships: migrating ==================
-- add_column(:user_chat_channel_memberships, :join_mode, :integer, {:null=>false, :default=>0})
   -> 0.0006s
== 20220706114835 AddJoinModeToChannelMemberships: migrated (0.0010s) =========

== 20220712040959 AddCaseSensitiveToWatchedWords: migrating ===================
-- add_column(:watched_words, :case_sensitive, :boolean, {:default=>false, :null=>false})
   -> 0.0005s
== 20220712040959 AddCaseSensitiveToWatchedWords: migrated (0.0008s) ==========

== 20220726164831 FixDeleteRejectedEmailAfterDaysSiteSetting: migrating =======
== 20220726164831 FixDeleteRejectedEmailAfterDaysSiteSetting: migrated (0.0005s) 

== 20220727040437 AddTopicTimersIndex: migrating ==============================
-- add_index(:topic_timers, [:topic_id], {:where=>"deleted_at IS NULL", :name=>"index_topic_timers_on_topic_id"})
   -> 0.0044s
== 20220727040437 AddTopicTimersIndex: migrated (0.0055s) =====================

== 20220727085001 CreateIndexOnReviewablesScoreDescCreatedAtDesc: migrating ===
-- add_index(:reviewables, [:score, :created_at], {:order=>{:score=>:desc, :created_at=>:desc}, :name=>"idx_reviewables_score_desc_created_at_desc"})
   -> 0.0027s
== 20220727085001 CreateIndexOnReviewablesScoreDescCreatedAtDesc: migrated (0.0032s) 

== 20220729032237 AddIndexToChatMessageCreatedAt: migrating ===================
-- execute("CREATE INDEX CONCURRENTLY IF NOT EXISTS\nidx_chat_messages_by_created_at_not_deleted\nON chat_messages (created_at)\nWHERE deleted_at IS NULL\n")
   -> 0.0027s
== 20220729032237 AddIndexToChatMessageCreatedAt: migrated (0.0032s) ==========

== 20220801044610 AddOutboundMessageIdToPost: migrating =======================
-- add_column(:posts, :outbound_message_id, :string)
   -> 0.0005s
== 20220801044610 AddOutboundMessageIdToPost: migrated (0.0008s) ==============

== 20220802014549 DisableChatUploadsIfSecureMediaEnabled: migrating ===========
== 20220802014549 DisableChatUploadsIfSecureMediaEnabled: migrated (0.0007s) ==

== 20220811170600 ResetFlairGroupIdIfNotGroupMember: migrating ================
-- execute("UPDATE users\nSET flair_group_id = NULL\nWHERE flair_group_id IS NOT NULL AND NOT EXISTS (\n  SELECT 1\n  FROM group_users\n  WHERE group_users.user_id = users.id\n    AND group_users.group_id = users.flair_group_id\n)\n")
   -> 0.0007s
== 20220811170600 ResetFlairGroupIdIfNotGroupMember: migrated (0.0010s) =======

== 20220818171849 MoveTlUserHistoryToPreviousAndNewValue: migrating ===========
-- execute("UPDATE user_histories\nSET previous_value = old_tl,\n    new_value = new_tl,\n    details = NULL\nFROM (\n    SELECT id user_history_id,\n           (REGEXP_MATCHES(details, 'old trust level: (d+)', 'i'))[1] old_tl,\n           (REGEXP_MATCHES(details, 'new trust level: (d+)', 'i'))[1] new_tl\n    FROM user_histories\n    WHERE action = 2\n) trust_levels\nWHERE user_histories.id = trust_levels.user_history_id\n")
   -> 0.0008s
== 20220818171849 MoveTlUserHistoryToPreviousAndNewValue: migrated (0.0012s) ==

== 20220825005115 BackfillOutboundMessageId: migrating ========================
== 20220825005115 BackfillOutboundMessageId: migrated (0.0013s) ===============

== 20220825054405 FillPersonalMessageEnabledGroupsBasedOnDeprecatedSettings: migrating 
== 20220825054405 FillPersonalMessageEnabledGroupsBasedOnDeprecatedSettings: migrated (0.0008s) 

== 20220901034107 AddUserCountStaleToChannel: migrating =======================
-- add_column(:chat_channels, :user_count_stale, :boolean, {:default=>false, :null=>false})
   -> 0.0012s
== 20220901034107 AddUserCountStaleToChannel: migrated (0.0016s) ==============

== 20220915132547 AddDominantColorToUploads: migrating ========================
-- add_column(:uploads, :dominant_color, :text, {:null=>true})
   -> 0.0004s
-- add_index(:uploads, :id, {:where=>"dominant_color IS NULL", :name=>"index_uploads_on_id"})
   -> 0.0051s
== 20220915132547 AddDominantColorToUploads: migrated (0.0060s) ===============

== 20220920044310 EnforceUserProfileMaxLimits: migrating ======================
-- execute("UPDATE user_profiles SET location = LEFT(location, 3000) WHERE location IS NOT NULL AND LENGTH(location) > 3000")
   -> 0.0003s
-- execute("UPDATE user_profiles SET website = LEFT(website, 3000) WHERE website IS NOT NULL AND LENGTH(website) > 3000")
   -> 0.0002s
-- change_column(:user_profiles, :location, :string, {:limit=>3000})
   -> 0.0141s
-- change_column(:user_profiles, :website, :string, {:limit=>3000})
   -> 0.0139s
== 20220920044310 EnforceUserProfileMaxLimits: migrated (0.0293s) =============

== 20220923212549 AddSeenPopupsToUserOptions: migrating =======================
-- add_column(:user_options, :seen_popups, :integer, {:array=>true})
   -> 0.0006s
== 20220923212549 AddSeenPopupsToUserOptions: migrated (0.0012s) ==============

== 20220927065328 SetSecureUploadsSettingsBasedOnSecureMediaEquivalent: migrating 
== 20220927065328 SetSecureUploadsSettingsBasedOnSecureMediaEquivalent: migrated (0.0008s) 

== 20220927171707 DisableAllowUncategorizedNewSites: migrating ================
-- execute("INSERT INTO site_settings(name, data_type, value, created_at, updated_at)\nVALUES('allow_uncategorized_topics', 5, 't', NOW(), NOW())\nON CONFLICT (name) DO NOTHING\n")
   -> 0.0002s
== 20220927171707 DisableAllowUncategorizedNewSites: migrated (0.0010s) =======

== 20221004122254 DeleteReviewablesTargettingDeletedChatMessages: migrating ===
== 20221004122254 DeleteReviewablesTargettingDeletedChatMessages: migrated (0.0023s) 

== 20221004122343 AddDarkModeLogoToCategories: migrating ======================
-- add_column(:categories, :uploaded_logo_dark_id, :integer, {:index=>true})
   -> 0.0005s
== 20221004122343 AddDarkModeLogoToCategories: migrated (0.0009s) =============

== 20221005143622 AddTypeToChatChannel: migrating =============================
-- add_column(:chat_channels, :type, :string)
   -> 0.0003s
== 20221005143622 AddTypeToChatChannel: migrated (0.0007s) ====================

== 20221006130454 AddAutoResponderTriggeredIdsIndex: migrating ================
-- add_index(:topic_custom_fields, [:topic_id, :value], {:unique=>true, :where=>"name = 'auto_responder_triggered_ids'", :name=>:idx_topic_custom_fields_auto_responder_triggered_ids_partial})
   -> 0.0056s
== 20221006130454 AddAutoResponderTriggeredIdsIndex: migrated (0.0061s) =======

== 20221013045158 AddSidebarListDestinationToUserOption: migrating ============
-- add_column(:user_options, :sidebar_list_destination, :integer, {:default=>0, :null=>false})
   -> 0.0008s
== 20221013045158 AddSidebarListDestinationToUserOption: migrated (0.0012s) ===

== 20221014005208 AddSlugColumnToChatChannel: migrating =======================
-- add_column(:chat_channels, :slug, :string)
   -> 0.0004s
-- add_index(:chat_channels, :slug, {:name=>"index_chat_channels_on_slug"})
   -> 0.0029s
== 20221014005208 AddSlugColumnToChatChannel: migrated (0.0039s) ==============

== 20221017223309 FixGeneralCategoryId: migrating =============================
== 20221017223309 FixGeneralCategoryId: migrated (0.0006s) ====================

== 20221018091412 MigrateChatChannels: migrating ==============================
== 20221018091412 MigrateChatChannels: migrated (0.0008s) =====================

== 20221018100550 AddSourceMapToJavascriptCache: migrating ====================
-- add_column(:javascript_caches, :source_map, :text)
   -> 0.0008s
== 20221018100550 AddSourceMapToJavascriptCache: migrated (0.0012s) ===========

== 20221026035440 SecurityLogOutInviteRedemptionInvitedUsers: migrating =======
== 20221026035440 SecurityLogOutInviteRedemptionInvitedUsers: migrated (0.0020s) 

== 20221027090832 MigrateDmChannels: migrating ================================
== 20221027090832 MigrateDmChannels: migrated (0.0005s) =======================

== 20221101061319 AddLastEditorIdToChatMessages: migrating ====================
-- add_column(:chat_messages, :last_editor_id, :integer)
   -> 0.0004s
-- add_column(:chat_message_revisions, :user_id, :integer)
   -> 0.0003s
-- add_index(:chat_messages, :last_editor_id, {:name=>"index_chat_messages_on_last_editor_id"})
   -> 0.0028s
-- add_index(:chat_message_revisions, :user_id, {:name=>"index_chat_message_revisions_on_user_id"})
   -> 0.0027s
== 20221101061319 AddLastEditorIdToChatMessages: migrated (0.0068s) ===========

== 20221101140632 RenameOnboardingPopupsSiteSetting: migrating ================
-- execute("UPDATE site_settings SET name = 'enable_user_tips' WHERE name = 'enable_onboarding_popups'")
   -> 0.0002s
== 20221101140632 RenameOnboardingPopupsSiteSetting: migrated (0.0006s) =======

== 20221101181505 HideAllUserTipsForExistentUsers: migrating ==================
-- execute("UPDATE user_options SET seen_popups = '{1, 2}'")
   -> 0.0014s
== 20221101181505 HideAllUserTipsForExistentUsers: migrated (0.0018s) =========

== 20221103051248 RemoveInvalidTopicAllowedUsersFromInvites: migrating ========
== 20221103051248 RemoveInvalidTopicAllowedUsersFromInvites: migrated (0.0023s) 

== 20221104054957 BackfillChannelSlugs: migrating =============================
== 20221104054957 BackfillChannelSlugs: migrated (0.0008s) ====================

== 20221107034541 MakeChatEditorIdsNotNull: migrating =========================
-- change_column_null(:chat_messages, :last_editor_id, false, nil)
   -> 0.0003s
-- change_column_null(:chat_message_revisions, :user_id, false, nil)
   -> 0.0002s
== 20221107034541 MakeChatEditorIdsNotNull: migrated (0.0014s) ================

== 20221108032233 DropOldBookmarkColumnsV2: migrating =========================
== 20221108032233 DropOldBookmarkColumnsV2: migrated (0.0026s) ================

== 20221110175456 PopulateDefaultComposerCategory: migrating ==================
== 20221110175456 PopulateDefaultComposerCategory: migrated (0.0007s) =========

== 20221114215902 HideUserTips3To5ForExistingUsers: migrating =================
-- execute("UPDATE user_options SET seen_popups = seen_popups || '{3, 4, 5}'")
   -> 0.0014s
== 20221114215902 HideUserTips3To5ForExistingUsers: migrated (0.0019s) ========

== 20221117052348 TruncateChatMessagesOverMaxLength: migrating ================
-- table_exists?(:chat_messages)
   -> 0.0004s
-- execute("UPDATE chat_messages\nSET message = LEFT(message, 6000), cooked_version = NULL\nWHERE LENGTH(message) > 6000\n")
   -> 0.0003s
== 20221117052348 TruncateChatMessagesOverMaxLength: migrated (0.0012s) =======

== 20221117142910 DeleteOrphanedChannels: migrating ===========================
== 20221117142910 DeleteOrphanedChannels: migrated (0.0007s) ==================

== 20221118104708 AddAllowChannelWideMentionsToChatChannels: migrating ========
-- add_column(:chat_channels, :allow_channel_wide_mentions, :boolean, {:null=>false, :default=>true})
   -> 0.0009s
== 20221118104708 AddAllowChannelWideMentionsToChatChannels: migrated (0.0013s) 

== 20221122070108 SaveChatAllowedGroupsSiteSetting: migrating =================
== 20221122070108 SaveChatAllowedGroupsSiteSetting: migrated (0.0006s) ========

== 20221125001635 AddBccAddressesToEmailLog: migrating ========================
-- add_column(:email_logs, :bcc_addresses, :text, {:null=>true})
   -> 0.0004s
== 20221125001635 AddBccAddressesToEmailLog: migrated (0.0007s) ===============

== 20221125173217 RemoveEnableWhispersSiteSetting: migrating ==================
-- execute("INSERT INTO site_settings(name, data_type, value, created_at, updated_at)\nSELECT 'whispers_allowed_groups', '20', '3', created_at, NOW()\nFROM site_settings\nWHERE name = 'enable_whispers' AND value = 't'\nON CONFLICT DO NOTHING\n")
   -> 0.0003s
-- execute("UPDATE site_settings\nSET value = array_to_string(array_append(string_to_array(value, '|'), '3'), '|')\nWHERE name = 'whispers_allowed_groups' AND\n      EXISTS(SELECT 1 FROM site_settings WHERE name = 'enable_whispers' AND value = 't') AND\n      NOT '3' = ANY(string_to_array(value, '|'))\n")
   -> 0.0003s
-- execute("UPDATE site_settings\nSET value = ''\nWHERE name = 'whispers_allowed_groups' AND\n      NOT EXISTS(SELECT 1 FROM site_settings WHERE name = 'enable_whispers' AND value = 't')\n")
   -> 0.0002s
-- execute("DELETE FROM site_settings WHERE name = 'enable_whispers'\n")
   -> 0.0002s
== 20221125173217 RemoveEnableWhispersSiteSetting: migrated (0.0014s) =========

== 20221201024458 MakeChannelSlugsUniqueWithIndex: migrating ==================
== 20221201024458 MakeChannelSlugsUniqueWithIndex: migrated (0.0021s) =========

== 20221201032830 DropTmpChatSlugTables: migrating ============================
== 20221201032830 DropTmpChatSlugTables: migrated (0.0008s) ===================

== 20221201035918 AddSlugUniqueIndexForChatChannels: migrating ================
-- remove_index(:chat_channels, :slug)
   -> 0.0024s
-- add_index(:chat_channels, :slug, {:unique=>true, :name=>"index_chat_channels_on_slug"})
   -> 0.0036s
== 20221201035918 AddSlugUniqueIndexForChatChannels: migrated (0.0065s) =======

== 20221202032006 AddChatMessageCountToChatChannels: migrating ================
-- add_column(:chat_channels, :messages_count, :integer, {:null=>false, :default=>0})
   -> 0.0008s
-- add_index(:chat_channels, :messages_count, {:name=>"index_chat_channels_on_messages_count"})
   -> 0.0029s
== 20221202032006 AddChatMessageCountToChatChannels: migrated (0.0043s) =======

== 20221202043755 UpdateChatChannelMessageCounts: migrating ===================
== 20221202043755 UpdateChatChannelMessageCounts: migrated (0.0010s) ==========

== 20221205225450 MigrateSidebarSiteSettings: migrating =======================
== 20221205225450 MigrateSidebarSiteSettings: migrated (0.0006s) ==============

== 20221211142629 RemoveUpdatedTranslationOverrides: migrating ================
-- execute("DELETE\nFROM translation_overrides\nWHERE translation_key IN (\n  'js.user.messages.read_more_group_pm_MF',\n  'js.user.messages.read_more_personal_pm_MF',\n  'js.topic.read_more_MF',\n  'js.topic.bumped_at_title_MF',\n  'js.topic.read_more_in_category',\n  'js.topic.read_more'\n)\n")
   -> 0.0002s
== 20221211142629 RemoveUpdatedTranslationOverrides: migrated (0.0005s) =======

== 20221212234948 DropTopicAllowedUsersBackupNov2022: migrating ===============
== 20221212234948 DropTopicAllowedUsersBackupNov2022: migrated (0.0006s) ======

== 20230103004613 MakeExperimentalHashtagFeatureDefaultForNewSites: migrating =
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nVALUES ('enable_experimental_hashtag_autocomplete', 5, 'f', now(), now())\nON CONFLICT DO NOTHING\n")
   -> 0.0003s
== 20230103004613 MakeExperimentalHashtagFeatureDefaultForNewSites: migrated (0.0012s) 

== 20230104054425 RenameRateLimitSearchAnon: migrating ========================
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'rate_limit_search_anon_user_per_minute', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'rate_limit_search_anon_user'\n")
   -> 0.0002s
-- execute("INSERT INTO site_settings (name, data_type, value, created_at, updated_at)\nSELECT 'rate_limit_search_anon_global_per_minute', data_type, value, created_at, updated_at\nFROM site_settings\nWHERE name = 'rate_limit_search_anon_global'\n")
   -> 0.0002s
== 20230104054425 RenameRateLimitSearchAnon: migrated (0.0008s) ===============

== 20230104054426 DeleteOldRateLimitSearchAnon: migrating =====================
-- execute("DELETE FROM site_settings WHERE name in ('rate_limit_search_anon_user', 'rate_limit_search_anon_global')")
   -> 0.0002s
== 20230104054426 DeleteOldRateLimitSearchAnon: migrated (0.0005s) ============

== 20230105153520 TriggerPostRebakeLocalOneboxXss: migrating ==================
== 20230105153520 TriggerPostRebakeLocalOneboxXss: migrated (0.0004s) =========

== 20230111223803 DeleteMisconfiguredEmbeddableHosts: migrating ===============
-- execute("DELETE FROM embeddable_hosts eh1\nWHERE eh1.id IN (\n  SELECT eh2.id FROM embeddable_hosts eh2\n  LEFT JOIN categories ON categories.id = eh2.category_id\n  WHERE eh2.category_id IS NOT NULL\n  AND categories.id IS NULL\n)\n")
   -> 0.0006s
== 20230111223803 DeleteMisconfiguredEmbeddableHosts: migrated (0.0009s) ======

== 20230113002617 ReindexInvalidIndexes: migrating ============================
== 20230113002617 ReindexInvalidIndexes: migrated (0.0011s) ===================

== 20230115233416 CreateSidebarSections: migrating ============================
-- create_table(:sidebar_sections)
   -> 0.0061s
-- add_index(:sidebar_sections, [:user_id, :title], {:unique=>true, :name=>"index_sidebar_sections_on_user_id_and_title"})
   -> 0.0024s
== 20230115233416 CreateSidebarSections: migrated (0.0090s) ===================

== 20230116090324 DropChatDraftsOverMaxLength: migrating ======================
-- table_exists?(:chat_drafts)
   -> 0.0005s
-- execute("DELETE FROM chat_drafts\nWHERE LENGTH(data) > 50000\n")
   -> 0.0003s
== 20230116090324 DropChatDraftsOverMaxLength: migrated (0.0012s) =============

== 20230117002110 CreateSidebarUrl: migrating =================================
-- create_table(:sidebar_urls)
   -> 0.0057s
== 20230117002110 CreateSidebarUrl: migrated (0.0063s) ========================

== 20230117143451 DropInvalidDrafts: migrating ================================
-- execute("DELETE FROM drafts\nWHERE LENGTH(data) > 400000\n")
   -> 0.0003s
== 20230117143451 DropInvalidDrafts: migrated (0.0006s) =======================

== 20230118020114 AddPublicTopicCountToTags: migrating ========================
-- add_column(:tags, :public_topic_count, :integer, {:default=>0, :null=>false})
   -> 0.0007s
-- execute("UPDATE tags t\nSET public_topic_count = x.topic_count\nFROM (\n  SELECT\n    COUNT(topics.id) AS topic_count,\n    tags.id AS tag_id\n  FROM tags\n  INNER JOIN topic_tags ON tags.id = topic_tags.tag_id\n  INNER JOIN topics ON topics.id = topic_tags.topic_id AND topics.deleted_at IS NULL AND topics.archetype != 'private_message'\n  INNER JOIN categories ON categories.id = topics.category_id AND NOT categories.read_restricted\n  GROUP BY tags.id\n) x\nWHERE x.tag_id = t.id\nAND x.topic_count <> t.public_topic_count;\n")
   -> 0.0014s
== 20230118020114 AddPublicTopicCountToTags: migrated (0.0026s) ===============

== 20230118042740 AddSidebarSectionIdToSidebarSectionLinks: migrating =========
-- add_column(:sidebar_section_links, :sidebar_section_id, :integer, {:index=>true})
   -> 0.0004s
== 20230118042740 AddSidebarSectionIdToSidebarSectionLinks: migrated (0.0007s) 

== 20230119000943 AddStaffTopicCountToTags: migrating =========================
-- add_column(:tags, :staff_topic_count, :integer, {:default=>0, :null=>false})
   -> 0.0006s
-- execute("UPDATE tags t\nSET staff_topic_count = x.topic_count\nFROM (\n  SELECT COUNT(topics.id) AS topic_count, tags.id AS tag_id\n  FROM tags\n  LEFT JOIN topic_tags ON tags.id = topic_tags.tag_id\n  LEFT JOIN topics ON topics.id = topic_tags.topic_id\n  AND topics.deleted_at IS NULL\n  AND topics.archetype != 'private_message'\n  GROUP BY tags.id\n) x\nWHERE x.tag_id = t.id\nAND x.topic_count <> t.staff_topic_count\n")
   -> 0.0006s
== 20230119000943 AddStaffTopicCountToTags: migrated (0.0016s) ================

== 20230119024157 RemoveTopicCountFromTags: migrating =========================
== 20230119024157 RemoveTopicCountFromTags: migrated (0.0015s) ================

== 20230119091939 DropOrphanedReviewableFlaggedPosts: migrating ===============
== 20230119091939 DropOrphanedReviewableFlaggedPosts: migrated (0.0006s) ======

== 20230119094939 RemoveWildcardFromEmailDomainSiteSettings: migrating ========
-- execute("UPDATE site_settings\nSET value = regexp_replace(value, '\\*(\\.)?|\\?', '', 'g')\nWHERE name IN (\n  'auto_approve_email_domains',\n  'allowed_email_domains',\n  'blocked_email_domains'\n)\n")
   -> 0.0002s
== 20230119094939 RemoveWildcardFromEmailDomainSiteSettings: migrated (0.0005s) 

== 20230123020036 MoveChatUploadsToUploadReferences: migrating ================
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT chat_uploads.upload_id, 'ChatMessage', chat_uploads.chat_message_id, chat_uploads.created_at, chat_uploads.updated_at\nFROM chat_uploads\nINNER JOIN uploads ON uploads.id = chat_uploads.upload_id\nON CONFLICT DO NOTHING\n")
   -> 0.0005s
== 20230123020036 MoveChatUploadsToUploadReferences: migrated (0.0009s) =======

== 20230123025112 MoveChatUploadsToUploadReferencesPost: migrating ============
-- execute("INSERT INTO upload_references(upload_id, target_type, target_id, created_at, updated_at)\nSELECT chat_uploads.upload_id, 'ChatMessage', chat_uploads.chat_message_id, chat_uploads.created_at, chat_uploads.updated_at\nFROM chat_uploads\nINNER JOIN uploads ON uploads.id = chat_uploads.upload_id\nON CONFLICT DO NOTHING\n")
   -> 0.0003s
== 20230123025112 MoveChatUploadsToUploadReferencesPost: migrated (0.0006s) ===

== 20230127173249 TruncateUserStatusTo100Characters: migrating ================
-- execute("UPDATE user_statuses SET description = left(description, 100)")
   -> 0.0003s
-- execute("UPDATE user_statuses SET emoji = left(emoji, 100)")
   -> 0.0001s
== 20230127173249 TruncateUserStatusTo100Characters: migrated (0.0007s) =======

== 20230130053144 AddThreadingEnabledToChatChannels: migrating ================
-- add_column(:chat_channels, :threading_enabled, :boolean, {:default=>false, :null=>false})
   -> 0.0007s
== 20230130053144 AddThreadingEnabledToChatChannels: migrated (0.0011s) =======

== 20230201012734 CreateChatThreadingModels: migrating ========================
-- create_table(:chat_threads)
   -> 0.0065s
-- add_index(:chat_threads, :channel_id, {:name=>"index_chat_threads_on_channel_id"})
   -> 0.0024s
-- add_index(:chat_threads, :original_message_id, {:name=>"index_chat_threads_on_original_message_id"})
   -> 0.0024s
-- add_index(:chat_threads, :original_message_user_id, {:name=>"index_chat_threads_on_original_message_user_id"})
   -> 0.0023s
-- add_index(:chat_threads, :status, {:name=>"index_chat_threads_on_status"})
   -> 0.0023s
-- add_index(:chat_threads, [:channel_id, :status], {:name=>"index_chat_threads_on_channel_id_and_status"})
   -> 0.0025s
-- add_column(:chat_messages, :thread_id, :bigint, {:null=>true})
   -> 0.0004s
-- add_index(:chat_messages, :thread_id, {:name=>"index_chat_messages_on_thread_id"})
   -> 0.0024s
== 20230201012734 CreateChatThreadingModels: migrated (0.0220s) ===============

== 20230201192925 AddTrigramIndexesToUsers: migrating =========================
-- add_index(:users, :username_lower, {:using=>"gist", :opclass=>:gist_trgm_ops, :algorithm=>:concurrently, :name=>"index_users_on_username_lower_trgm"})
   -> 0.0019s
-- add_index(:users, :name, {:using=>"gist", :opclass=>:gist_trgm_ops, :algorithm=>:concurrently, :name=>"index_users_on_name_trgm"})
   -> 0.0009s
== 20230201192925 AddTrigramIndexesToUsers: migrated (0.0034s) ================

== 20230202021414 RemoveEnableNewUserProfileNavGroupsSiteSettings: migrating ==
-- execute("DELETE FROM site_settings WHERE name = 'enable_new_user_profile_nav_groups'")
   -> 0.0002s
== 20230202021414 RemoveEnableNewUserProfileNavGroupsSiteSettings: migrated (0.0006s) 

== 20230202173641 CreateFormTemplates: migrating ==============================
-- create_table(:form_templates)
   -> 0.0058s
-- add_index(:form_templates, :name, {:unique=>true, :name=>"index_form_templates_on_name"})
   -> 0.0023s
== 20230202173641 CreateFormTemplates: migrated (0.0086s) =====================

== 20230202204937 AddIndexToPostsWhereNotDeletedOrEmpty: migrating ============
-- execute("DROP INDEX CONCURRENTLY IF EXISTS index_posts_on_id_topic_id_where_not_deleted_or_empty\n")
   -> 0.0002s
-- execute("CREATE INDEX CONCURRENTLY index_posts_on_id_topic_id_where_not_deleted_or_empty ON posts (id, topic_id) where deleted_at IS NULL AND raw <> ''\n")
   -> 0.0034s
== 20230202204937 AddIndexToPostsWhereNotDeletedOrEmpty: migrated (0.0041s) ===

== 20230206033907 AddIconToSidebarUrls: migrating =============================
-- add_column(:sidebar_urls, :icon, :string)
   -> 0.0004s
== 20230206033907 AddIconToSidebarUrls: migrated (0.0008s) ====================

== 20230207042719 AddLimitsToSidebarSectionsAndSidebarUrls: migrating =========
-- execute("UPDATE sidebar_urls SET icon = 'link' WHERE icon IS NULL")
   -> 0.0004s
-- change_column(:sidebar_sections, :title, :string, {:limit=>30, :null=>false})
   -> 0.0054s
-- change_column(:sidebar_urls, :icon, :string, {:limit=>40, :null=>false})
   -> 0.0051s
-- change_column(:sidebar_urls, :name, :string, {:limit=>80, :null=>false})
   -> 0.0049s
-- change_column(:sidebar_urls, :value, :string, {:limit=>200, :null=>false})
   -> 0.0030s
== 20230207042719 AddLimitsToSidebarSectionsAndSidebarUrls: migrated (0.0195s) 

== 20230207093514 CreateCategorySettings: migrating ===========================
-- create_table(:category_settings)
   -> 0.0066s
== 20230207093514 CreateCategorySettings: migrated (0.0072s) ==================

== 20230208020404 PopulateCategorySettings: migrating =========================
-- execute("INSERT INTO\n  category_settings(\n    category_id,\n    require_topic_approval,\n    require_reply_approval,\n    num_auto_bump_daily,\n    created_at,\n    updated_at\n  )\nSELECT\n  category_id,\n  MAX(\n    CASE WHEN (name = 'require_topic_approval')\n    THEN NULLIF(value, '') ELSE NULL END\n  )::boolean AS require_topic_approval,\n  MAX(\n    CASE WHEN (name = 'require_reply_approval')\n    THEN NULLIF(value, '') ELSE NULL END\n  )::boolean AS require_reply_approval,\n  MAX(\n    CASE WHEN (name = 'num_auto_bump_daily')\n    THEN NULLIF(value, '') ELSE NULL END\n  )::integer AS num_auto_bump_daily,\n  NOW() AS created_at,\n  NOW() AS updated_at\nFROM category_custom_fields\nWHERE name IN (\n  'require_topic_approval',\n  'require_reply_approval',\n  'num_auto_bump_daily'\n)\nGROUP BY category_id;\n")
   -> 0.0008s
== 20230208020404 PopulateCategorySettings: migrated (0.0013s) ================

== 20230209222225 AddLinkableIndexToSidebarSectionLinks: migrating ============
-- execute("DROP INDEX CONCURRENTLY IF EXISTS index_sidebar_section_links_on_linkable_type_and_linkable_id\n")
   -> 0.0002s
-- execute("CREATE INDEX CONCURRENTLY index_sidebar_section_links_on_linkable_type_and_linkable_id\nON sidebar_section_links (linkable_type,linkable_id)\n")
   -> 0.0031s
== 20230209222225 AddLinkableIndexToSidebarSectionLinks: migrated (0.0039s) ===

== 20230213234415 CreateCategoryFormTemplates: migrating ======================
-- create_table(:category_form_templates)
   -> 0.0088s
== 20230213234415 CreateCategoryFormTemplates: migrated (0.0094s) =============

== 20230214044350 AddPublicToSidebarSections: migrating =======================
-- add_column(:sidebar_sections, :public, :boolean, {:null=>false, :default=>false})
   -> 0.0008s
== 20230214044350 AddPublicToSidebarSections: migrated (0.0012s) ==============

== 20230224193734 CreateThemeSvgSprite: migrating =============================
-- create_table(:theme_svg_sprites)
   -> 0.0063s
-- add_index(:theme_svg_sprites, :theme_id, {:unique=>true, :name=>"index_theme_svg_sprites_on_theme_id"})
   -> 0.0026s
== 20230224193734 CreateThemeSvgSprite: migrated (0.0096s) ====================

== 20230224225129 BackfillSvgSprites: migrating ===============================
== 20230224225129 BackfillSvgSprites: migrated (0.0160s) ======================

== 20230227050146 UpdateNarrativeBadgeIcons: migrating ========================
-- execute("UPDATE badges\nSET icon = 'stamp'\nWHERE\n  name IN ('Certified', 'Licensed')\n  AND icon = 'fa-certificate'\n")
   -> 0.0005s
== 20230227050146 UpdateNarrativeBadgeIcons: migrated (0.0025s) ===============

== 20230227050147 UpdateBadgeIcons: migrating =================================
-- execute("UPDATE badges SET icon = 'book-reader' WHERE id IN (17) AND icon = 'fa-certificate'")
   -> 0.0005s
-- execute("UPDATE badges SET icon = 'file-alt' WHERE id IN (16) AND icon = 'fa-certificate'")
   -> 0.0002s
-- execute("UPDATE badges SET icon = 'link' WHERE id IN (14,28,29,30) AND icon = 'fa-certificate'")
   -> 0.0002s
-- execute("UPDATE badges SET icon = 'quote-right' WHERE id IN (15) AND icon = 'fa-certificate'")
   -> 0.0002s
-- execute("UPDATE badges SET icon = 'heart' WHERE id IN (11,5) AND icon = 'fa-certificate'")
   -> 0.0002s
-- execute("UPDATE badges SET icon = 'flag' WHERE id IN (13) AND icon = 'fa-certificate'")
   -> 0.0001s
-- execute("UPDATE badges SET icon = 'share-alt' WHERE id IN (12,21,22,23) AND icon = 'fa-certificate'")
   -> 0.0002s
-- execute("UPDATE badges SET icon = 'user-edit' WHERE id IN (9) AND icon = 'fa-certificate'")
   -> 0.0001s
-- execute("UPDATE badges SET icon = 'pen' WHERE id IN (10) AND icon = 'fa-certificate'")
   -> 0.0001s
-- execute("UPDATE badges SET icon = 'far-edit' WHERE id IN (48) AND icon = 'fa-certificate'")
   -> 0.0001s
-- execute("UPDATE badges SET icon = 'reply' WHERE id IN (6,7,8) AND icon = 'fa-certificate'")
   -> 0.0003s
-- execute("UPDATE badges SET icon = 'file-signature' WHERE id IN (18,19,20) AND icon = 'fa-certificate'")
   -> 0.0002s
-- execute("UPDATE badges SET icon = 'at' WHERE id IN (40) AND icon = 'fa-certificate'")
   -> 0.0002s
-- execute("UPDATE badges SET icon = 'smile' WHERE id IN (41) AND icon = 'fa-certificate'")
   -> 0.0001s
-- execute("UPDATE badges SET icon = 'cube' WHERE id IN (42) AND icon = 'fa-certificate'")
   -> 0.0002s
-- execute("UPDATE badges SET icon = 'envelope' WHERE id IN (43) AND icon = 'fa-certificate'")
   -> 0.0001s
-- execute("UPDATE badges SET icon = 'medal' WHERE id IN (44) AND icon = 'fa-certificate'")
   -> 0.0001s
-- execute("UPDATE badges SET icon = 'birthday-cake' WHERE id IN (24) AND icon = 'far-clock'")
   -> 0.0002s
== 20230227050147 UpdateBadgeIcons: migrated (0.0073s) ========================

== 20230227172543 MakeChatMentionNotificationIdNullable: migrating ============
-- change_column_null(:chat_mentions, :notification_id, true, nil)
   -> 0.0003s
== 20230227172543 MakeChatMentionNotificationIdNullable: migrated (0.0008s) ===

== 20230228062442 AddChatHeaderIndicatorPreference: migrating =================
-- add_column(:user_options, :chat_header_indicator_preference, :integer, {:default=>0, :null=>false})
   -> 0.0008s
== 20230228062442 AddChatHeaderIndicatorPreference: migrated (0.0012s) ========

== 20230228105851 DropBadgeGrantedTitleColumn: migrating ======================
== 20230228105851 DropBadgeGrantedTitleColumn: migrated (0.0017s) =============

== 20230301071240 AddAutoBumpCooldownDaysToCategorySettings: migrating ========
-- add_column(:category_settings, :auto_bump_cooldown_days, :integer, {:default=>1})
   -> 0.0006s
== 20230301071240 AddAutoBumpCooldownDaysToCategorySettings: migrated (0.0011s) 

== 20230303015952 AddExternalToSidebarUrls: migrating =========================
-- add_column(:sidebar_urls, :external, :boolean, {:default=>false, :null=>false})
   -> 0.0007s
== 20230303015952 AddExternalToSidebarUrls: migrated (0.0011s) ================

== 20230307051200 AddPositionToSidebarSectionLinks: migrating =================
-- add_column(:sidebar_section_links, :position, :integer, {:default=>0, :null=>false})
   -> 0.0006s
-- execute("UPDATE sidebar_section_links SET position = id")
   -> 0.0004s
-- add_index(:sidebar_section_links, [:user_id, :sidebar_section_id, :position], {:unique=>true, :name=>"links_user_id_section_id_position"})
   -> 0.0033s
== 20230307051200 AddPositionToSidebarSectionLinks: migrated (0.0049s) ========

== 20230308042434 BackfillAutoBumpCooldownDaysCategorySetting: migrating ======
-- execute("INSERT INTO\n  category_settings(\n    category_id,\n    auto_bump_cooldown_days,\n    created_at,\n    updated_at\n  )\nSELECT\n  id,\n  1,\n  NOW(),\n  NOW()\nFROM categories\nON CONFLICT (category_id)\nDO\n  UPDATE SET\n    auto_bump_cooldown_days = 1,\n    updated_at = NOW();\n")
   -> 0.0008s
== 20230308042434 BackfillAutoBumpCooldownDaysCategorySetting: migrated (0.0013s) 

== 20230317194217 RebakeLazyYtPosts: migrating ================================
-- execute("UPDATE posts SET baked_version = 0\nWHERE cooked LIKE '%lazyYT-container%'\n")
   -> 0.0019s
== 20230317194217 RebakeLazyYtPosts: migrated (0.0024s) =======================

== 20230328034956 AddSidebarSectionIdIndexToSidebarSectionLink: migrating =====
-- execute("DROP INDEX CONCURRENTLY IF EXISTS idx_sidebar_section_links_on_sidebar_section_id\n")
   -> 0.0002s
-- execute("CREATE UNIQUE INDEX CONCURRENTLY idx_sidebar_section_links_on_sidebar_section_id\nON sidebar_section_links (sidebar_section_id, user_id, position)\n")
   -> 0.0030s
-- execute("DROP INDEX CONCURRENTLY IF EXISTS links_user_id_section_id_position\n")
   -> 0.0042s
== 20230328034956 AddSidebarSectionIdIndexToSidebarSectionLink: migrated (0.0081s) 

== 20230403012844 DropChatUploads: migrating ==================================
== 20230403012844 DropChatUploads: migrated (0.0016s) =========================

== 20230403063113 DropIdxPostCustomFieldsAkismet: migrating ===================
-- execute("DROP INDEX IF EXISTS idx_post_custom_fields_akismet")
   -> 0.0004s
== 20230403063113 DropIdxPostCustomFieldsAkismet: migrated (0.0009s) ==========

== 20230403094936 ChangeGoogleAnalyticsDefault: migrating =====================
== 20230403094936 ChangeGoogleAnalyticsDefault: migrated (0.0013s) ============

== 20230404064728 SystemUserForPublicSections: migrating ======================
-- execute("      UPDATE sidebar_sections\n      SET user_id = -1\n      WHERE public IS TRUE\n")
   -> 0.0004s
-- execute("      UPDATE sidebar_section_links\n      SET user_id = -1\n      FROM sidebar_sections\n      WHERE sidebar_sections.public IS TRUE\n        AND sidebar_section_links.sidebar_section_id = sidebar_sections.id\n")
   -> 0.0004s
== 20230404064728 SystemUserForPublicSections: migrated (0.0012s) =============

== 20230405121453 AddPasswordAlgorithmToUsers: migrating ======================
-- column_exists?(:users, :password_algorithm)
   -> 0.0023s
-- add_column(:users, :password_algorithm, :string, {:limit=>64})
   -> 0.0005s
-- execute("UPDATE users SET password_algorithm = '$pbkdf2-sha256$i=64000,l=32$'\nWHERE id IN (\n  SELECT id FROM users\n  WHERE users.password_hash IS NOT NULL\n  AND users.password_algorithm IS NULL\n  LIMIT 5000\n)\n")
   -> 0.0038s
== 20230405121453 AddPasswordAlgorithmToUsers: migrated (0.0072s) =============

== 20230405121454 UpdatePasswordAlgorithmPostDeploy: migrating ================
-- execute("UPDATE users SET password_algorithm = '$pbkdf2-sha256$i=64000,l=32$'\nWHERE users.password_algorithm IS NULL\nAND users.password_hash IS NOT NULL\n")
   -> 0.0003s
== 20230405121454 UpdatePasswordAlgorithmPostDeploy: migrated (0.0007s) =======

== 20230411012630 AddThreadNotDeletedIndexChatMessages: migrating =============
-- execute("DROP INDEX IF EXISTS idx_chat_messages_by_thread_id_not_deleted\n")
   -> 0.0002s
-- execute("CREATE INDEX CONCURRENTLY IF NOT EXISTS\nidx_chat_messages_by_thread_id_not_deleted\nON chat_messages (thread_id)\nWHERE deleted_at IS NULL\n")
   -> 0.0031s
== 20230411012630 AddThreadNotDeletedIndexChatMessages: migrated (0.0037s) ====

== 20230411023246 AddChatMessageRepliesCountToChatThreads: migrating ==========
-- add_column(:chat_threads, :replies_count, :integer, {:null=>false, :default=>0})
   -> 0.0006s
-- add_index(:chat_threads, :replies_count, {:name=>"index_chat_threads_on_replies_count"})
   -> 0.0026s
== 20230411023246 AddChatMessageRepliesCountToChatThreads: migrated (0.0037s) =

== 20230411023340 UpdateThreadReplyCounts: migrating ==========================
== 20230411023340 UpdateThreadReplyCounts: migrated (0.0013s) =================

== 20230411031428 AddSegmentToSidebarUrls: migrating ==========================
-- add_column(:sidebar_urls, :segment, :integer, {:default=>0, :null=>false})
   -> 0.0006s
== 20230411031428 AddSegmentToSidebarUrls: migrated (0.0010s) =================

== 20230411031520 AddSectionTypeToSidebarSections: migrating ==================
-- add_column(:sidebar_sections, :section_type, :integer)
   -> 0.0003s
-- add_index(:sidebar_sections, :section_type, {:unique=>true, :name=>"index_sidebar_sections_on_section_type"})
   -> 0.0026s
== 20230411031520 AddSectionTypeToSidebarSections: migrated (0.0034s) =========

== 20230411032053 InsertCommunityToSidebarSections: migrating =================
== 20230411032053 InsertCommunityToSidebarSections: migrated (0.0021s) ========

== 20230412120414 AddPrefersEncryptFieldToPendingPms: migrating ===============
-- add_column(:discourse_automation_pending_pms, :prefers_encrypt, :boolean, {:default=>false})
   -> 0.0005s
-- execute("UPDATE discourse_automation_pending_pms\nSET prefers_encrypt = false\n")
   -> 0.0003s
-- change_column_null(:discourse_automation_pending_pms, :prefers_encrypt, false, nil)
   -> 0.0002s
== 20230412120414 AddPrefersEncryptFieldToPendingPms: migrated (0.0013s) ======

== 20230413121500 AddDiscourseConnectAllowedRedirectDomainsToSiteSettings: migrating 
-- execute("INSERT INTO site_settings(name, data_type, value, created_at, updated_at)\nSELECT 'discourse_connect_allowed_redirect_domains', 8, '*', created_at, NOW()\nFROM site_settings\nWHERE name = 'discourse_connect_allows_all_return_paths' AND value = 't'\n")
   -> 0.0002s
-- execute("DELETE FROM site_settings\nWHERE name = 'discourse_connect_allows_all_return_paths'\n")
   -> 0.0001s
== 20230413121500 AddDiscourseConnectAllowedRedirectDomainsToSiteSettings: migrated (0.0007s) 

== 20230419001801 RemoveEnableCustomSidebarSectionsSetting: migrating =========
-- execute("DELETE FROM site_settings WHERE name = 'enable_custom_sidebar_sections'")
   -> 0.0002s
== 20230419001801 RemoveEnableCustomSidebarSectionsSetting: migrated (0.0005s) 

== 20230501022508 RenameNotifyAboutFlagsAfterSiteSetting: migrating ===========
-- execute("UPDATE site_settings SET name = 'notify_about_reviewable_item_after' WHERE name = 'notify_about_flags_after'")
   -> 0.0002s
== 20230501022508 RenameNotifyAboutFlagsAfterSiteSetting: migrated (0.0005s) ==

== 20230505113906 HideUserTipsForExistingUsers: migrating =====================
-- execute("UPDATE user_options SET seen_popups = '{1, 2, 3, 4, 5}'")
   -> 0.0014s
== 20230505113906 HideUserTipsForExistingUsers: migrated (0.0017s) ============

== 20230509214723 SeparateTrustedUsersCanEditOthersSiteSetting: migrating =====
-- select_value("SELECT 1 FROM site_settings WHERE name = 'trusted_users_can_edit_others' AND value = 'f'")
   -> 0.0003s
== 20230509214723 SeparateTrustedUsersCanEditOthersSiteSetting: migrated (0.0006s) 

== 20230510142249 AddUserChatThreadMemberships: migrating =====================
-- create_table(:user_chat_thread_memberships)
   -> 0.0042s
-- add_index(:user_chat_thread_memberships, [:user_id, :thread_id], {:unique=>true, :name=>"user_chat_thread_unique_memberships"})
   -> 0.0024s
== 20230510142249 AddUserChatThreadMemberships: migrated (0.0071s) ============

== 20230515103515 CreateWatchedWordGroups: migrating ==========================
-- create_table(:watched_word_groups)
   -> 0.0035s
== 20230515103515 CreateWatchedWordGroups: migrated (0.0040s) =================

== 20230515131111 AddWatchedWordGroupIdToWatchedWords: migrating ==============
-- add_column(:watched_words, :watched_word_group_id, :bigint)
   -> 0.0004s
-- add_index(:watched_words, :watched_word_group_id, {:name=>"index_watched_words_on_watched_word_group_id"})
   -> 0.0024s
== 20230515131111 AddWatchedWordGroupIdToWatchedWords: migrated (0.0033s) =====

== 20230523073109 DeleteOldPersonalMessageSettings: migrating =================
-- execute("DELETE FROM site_settings WHERE name = 'enable_personal_messages'\n")
   -> 0.0002s
-- execute("DELETE FROM site_settings WHERE name = 'min_trust_to_send_messages'\n")
   -> 0.0001s
== 20230523073109 DeleteOldPersonalMessageSettings: migrated (0.0007s) ========

== 20230528134326 EnableExperimentalHashtagAutocompleteTrueForAllSites: migrating 
== 20230528134326 EnableExperimentalHashtagAutocompleteTrueForAllSites: migrated (0.0004s) 

== 20230602034711 RenameEverythingToTopicsLink: migrating =====================
== 20230602034711 RenameEverythingToTopicsLink: migrated (0.0010s) ============

== 20230607091233 BackfillThreadMemberships: migrating ========================
-- execute("INSERT INTO user_chat_thread_memberships(\n  user_id,\n  thread_id,\n  notification_level,\n  last_read_message_id,\n  created_at,\n  updated_at\n)\nSELECT\n  thread_participant_stats.user_id,\n  thread_participant_stats.thread_id,\n  2,\n  (\n    SELECT id FROM chat_messages\n    WHERE thread_id = thread_participant_stats.thread_id\n    AND deleted_at IS NULL\n    ORDER BY created_at DESC, id DESC\n    LIMIT 1\n  ),\n  NOW(),\n  NOW()\nFROM (\n  SELECT chat_messages.thread_id, chat_messages.user_id\n  FROM chat_messages\n  INNER JOIN chat_threads ON chat_threads.id = chat_messages.thread_id\n  WHERE chat_messages.thread_id IS NOT NULL\n  GROUP BY chat_messages.thread_id, chat_messages.user_id\n  ORDER BY chat_messages.thread_id ASC, chat_messages.user_id ASC\n) AS thread_participant_stats\nINNER JOIN users ON users.id = thread_participant_stats.user_id\nLEFT JOIN user_chat_thread_memberships ON user_chat_thread_memberships.thread_id = thread_participant_stats.thread_id\n  AND user_chat_thread_memberships.user_id = thread_participant_stats.user_id\nWHERE user_chat_thread_memberships IS NULL\nORDER BY user_chat_thread_memberships.thread_id ASC\nON CONFLICT DO NOTHING;\n")
   -> 0.0009s
== 20230607091233 BackfillThreadMemberships: migrated (0.0013s) ===============

== 20230608163854 CreateSummarySectionsTable: migrating =======================
-- create_table(:summary_sections)
   -> 0.0060s
== 20230608163854 CreateSummarySectionsTable: migrated (0.0064s) ==============

== 20230612134421 RemoveOldPollsDataFromCustomFields: migrating ===============
-- execute("DELETE FROM post_custom_fields\nWHERE name LIKE 'polls%'\n")
   -> 0.0004s
== 20230612134421 RemoveOldPollsDataFromCustomFields: migrated (0.0007s) ======

== 20230614011312 RenameDefaultSidebarCategoriesSetting: migrating ============
-- execute("UPDATE site_settings SET name = 'default_navigation_menu_categories' WHERE name = 'default_sidebar_categories'")
   -> 0.0002s
== 20230614011312 RenameDefaultSidebarCategoriesSetting: migrated (0.0005s) ===

== 20230614011419 RenameDefaultSidebarTagsSetting: migrating ==================
-- execute("UPDATE site_settings SET name = 'default_navigation_menu_tags' WHERE name = 'default_sidebar_tags'")
   -> 0.0003s
== 20230614011419 RenameDefaultSidebarTagsSetting: migrated (0.0007s) =========

== 20230614041219 DeleteDuplicatePollVotes: migrating =========================
-- execute("DELETE FROM poll_votes\nWHERE (poll_id, user_id, poll_option_id) IN (\n  SELECT pv.poll_id, pv.user_id, pv.poll_option_id\n  FROM poll_votes pv\n  JOIN polls p ON pv.poll_id = p.id\n  WHERE p.type = 0\n  AND EXISTS (\n    SELECT 1\n    FROM poll_votes pv2\n    WHERE pv.poll_id = pv2.poll_id\n    AND pv.user_id = pv2.user_id\n    AND pv.created_at < pv2.created_at\n  )\n);\n")
   -> 0.0012s
== 20230614041219 DeleteDuplicatePollVotes: migrated (0.0016s) ================

== 20230618041001 AddSidebarLinkToFilteredListToUserOption: migrating =========
-- add_column(:user_options, :sidebar_link_to_filtered_list, :boolean, {:default=>false, :null=>false})
   -> 0.0007s
-- execute("UPDATE user_options\nSET sidebar_link_to_filtered_list = true\nWHERE sidebar_list_destination = 1\n")
   -> 0.0003s
== 20230618041001 AddSidebarLinkToFilteredListToUserOption: migrated (0.0015s) 

== 20230618041123 AddSidebarShowCountOfNewItemsToUserOption: migrating ========
-- add_column(:user_options, :sidebar_show_count_of_new_items, :boolean, {:default=>false, :null=>false})
   -> 0.0007s
-- execute("UPDATE user_options\nSET sidebar_show_count_of_new_items = true\nWHERE sidebar_list_destination = 1\n")
   -> 0.0003s
== 20230618041123 AddSidebarShowCountOfNewItemsToUserOption: migrated (0.0013s) 

== 20230620050614 RemoveDefaultSidebarListDestinationSetting: migrating =======
-- execute("DELETE FROM site_settings WHERE name = 'default_sidebar_list_destination'")
   -> 0.0002s
== 20230620050614 RemoveDefaultSidebarListDestinationSetting: migrated (0.0005s) 

== 20230627044755 AddLastViewedAtToUserChatChannelMemberships: migrating ======
-- add_column(:user_chat_channel_memberships, :last_viewed_at, :datetime, {:null=>false, :default=>#<Proc:0x0000fb5cd76b3868 /var/www/discourse/plugins/chat/db/migrate/20230627044755_add_last_viewed_at_to_user_chat_channel_memberships.rb:9 (lambda)>})
   -> 0.0005s
== 20230627044755 AddLastViewedAtToUserChatChannelMemberships: migrated (0.0008s) 

== 20230627060104 RemoveNewEditSidebarCategoriesTagsInterfaceGroupsSiteSetting: migrating 
-- execute("DELETE FROM site_settings WHERE name = 'new_edit_sidebar_categories_tags_interface_groups'")
   -> 0.0002s
== 20230627060104 RemoveNewEditSidebarCategoriesTagsInterfaceGroupsSiteSetting: migrated (0.0005s) 

== 20230628062236 AddWatchedPrecedenceOverMutedToUserOptions: migrating =======
-- add_column(:user_options, :watched_precedence_over_muted, :boolean)
   -> 0.0004s
== 20230628062236 AddWatchedPrecedenceOverMutedToUserOptions: migrated (0.0014s) 

== 20230703035052 AddStatusToTranslationOverrides: migrating ==================
-- add_column(:translation_overrides, :original_translation, :text)
   -> 0.0003s
-- add_column(:translation_overrides, :status, :integer, {:null=>false, :default=>0})
   -> 0.0004s
== 20230703035052 AddStatusToTranslationOverrides: migrated (0.0012s) =========

== 20230707025733 AddLastMessageIdToChannelAndThread: migrating ===============
-- add_column(:chat_channels, :last_message_id, :bigint, {:null=>true})
   -> 0.0003s
-- add_column(:chat_threads, :last_message_id, :bigint, {:null=>true})
   -> 0.0003s
-- add_index(:chat_channels, :last_message_id, {:name=>"index_chat_channels_on_last_message_id"})
   -> 0.0027s
-- add_index(:chat_threads, :last_message_id, {:name=>"index_chat_threads_on_last_message_id"})
   -> 0.0023s
== 20230707025733 AddLastMessageIdToChannelAndThread: migrated (0.0062s) ======

== 20230707031122 AddWatchedPrecedenceOverMutedIndexToUserOptions: migrating ==
-- add_index(:user_options, :watched_precedence_over_muted, {:name=>"index_user_options_on_watched_precedence_over_muted"})
   -> 0.0026s
== 20230707031122 AddWatchedPrecedenceOverMutedIndexToUserOptions: migrated (0.0031s) 

== 20230707082645 BackfillChatChannelAndThreadLastMessageIds: migrating =======
-- execute("      UPDATE chat_channels\n      SET last_message_id = (\n        SELECT cm.id\n        FROM chat_messages cm\n        LEFT JOIN chat_threads ON chat_threads.original_message_id = cm.id\n        WHERE cm.chat_channel_id = chat_channels.id\n          AND cm.deleted_at IS NULL\n          AND (cm.thread_id IS NULL OR chat_threads.id IS NOT NULL)\n        ORDER BY cm.created_at DESC, cm.id DESC\n        LIMIT 1\n      );\n")
   -> 0.0008s
-- execute("      UPDATE chat_threads\n      SET last_message_id = (\n        SELECT cm.id\n        FROM chat_messages cm\n        WHERE cm.thread_id = chat_threads.id\n          AND cm.deleted_at IS NULL\n        ORDER BY cm.created_at DESC, cm.id DESC\n        LIMIT 1\n      );\n")
   -> 0.0003s
== 20230707082645 BackfillChatChannelAndThreadLastMessageIds: migrated (0.0015s) 

== 20230708011310 FixReviewableQueuedPostsTargetCreatedById: migrating ========
-- execute("UPDATE reviewables\nSET target_created_by_id = created_by_id,\n    created_by_id = -1\nWHERE type = 'ReviewableQueuedPost' AND target_created_by_id IS NULL\n")
   -> 0.0004s
== 20230708011310 FixReviewableQueuedPostsTargetCreatedById: migrated (0.0007s) 

-- execute("    UPDATE chat_channels\n    SET last_message_id = (\n      SELECT cm.id\n      FROM chat_messages cm\n      LEFT JOIN chat_threads ON chat_threads.original_message_id = cm.id\n      WHERE cm.chat_channel_id = chat_channels.id\n        AND cm.deleted_at IS NULL\n        AND (cm.thread_id IS NULL OR chat_threads.id IS NOT NULL)\n      ORDER BY cm.created_at DESC, cm.id DESC\n      LIMIT 1\n    );\n")
   -> 0.0004s
-- execute("    UPDATE chat_threads\n    SET last_message_id = (\n      SELECT cm.id\n      FROM chat_messages cm\n      WHERE cm.thread_id = chat_threads.id\n        AND cm.deleted_at IS NULL\n      ORDER BY cm.created_at DESC, cm.id DESC\n      LIMIT 1\n    );\n")
   -> 0.0003s
== 20230710040640 BackfillChatChannelAndThreadLastMessageIdsPostMigrate: migrating 
== 20230710040640 BackfillChatChannelAndThreadLastMessageIdsPostMigrate: migrated (0.0003s) 

== 20230712011946 AddTopicIdNotificationLevelIndexToTopicUsers: migrating =====
-- add_index(:topic_users, [:topic_id, :notification_level], {:name=>"index_topic_users_on_topic_id_and_notification_level"})
   -> 0.0030s
== 20230712011946 AddTopicIdNotificationLevelIndexToTopicUsers: migrated (0.0040s) 

== 20230712013248 AddCategoryIdNotificationLevelIndexToCategoryUsers: migrating 
-- add_index(:category_users, [:category_id, :notification_level], {:name=>"index_category_users_on_category_id_and_notification_level"})
   -> 0.0024s
== 20230712013248 AddCategoryIdNotificationLevelIndexToCategoryUsers: migrated (0.0029s) 

== 20230721025249 RemoveExperimentalSiteSettingForThreads: migrating ==========
-- execute("DELETE FROM site_settings WHERE name='enable_experimental_chat_threaded_discussions'")
   -> 0.0003s
== 20230721025249 RemoveExperimentalSiteSettingForThreads: migrated (0.0006s) =

== 20230722124044 AddChatSeparateSidebarModeUserOption: migrating =============
-- add_column(:user_options, :chat_separate_sidebar_mode, :integer, {:default=>0, :null=>false})
   -> 0.0008s
== 20230722124044 AddChatSeparateSidebarModeUserOption: migrated (0.0012s) ====

== 20230727015030 AddIndexTopicIdCreatedAtOnPosts: migrating ==================
-- remove_index(:posts, [:topic_id, :created_at], {:algorithm=>:concurrently, :if_exists=>true})
   -> 0.0042s
-- add_index(:posts, [:topic_id, :created_at], {:algorithm=>:concurrently, :name=>"index_posts_on_topic_id_and_created_at"})
   -> 0.0034s
== 20230727015030 AddIndexTopicIdCreatedAtOnPosts: migrated (0.0081s) =========

== 20230727015254 ChangeCategorySettingNumAutoBumpDailyDefault: migrating =====
-- change_column_default(:category_settings, :num_auto_bump_daily, 0)
   -> 0.0015s
-- execute("WITH custom_fields AS (\n  SELECT\n    category_id,\n    MAX(\n      CASE WHEN (name = 'require_topic_approval')\n      THEN NULLIF(value, '') ELSE NULL END\n    )::boolean AS require_topic_approval,\n    MAX(\n      CASE WHEN (name = 'require_reply_approval')\n      THEN NULLIF(value, '') ELSE NULL END\n    )::boolean AS require_reply_approval,\n    MAX(\n      CASE WHEN (name = 'num_auto_bump_daily')\n      THEN NULLIF(value, '') ELSE NULL END\n    )::integer AS num_auto_bump_daily,\n    NOW() AS created_at,\n    NOW() AS updated_at\n  FROM category_custom_fields\n  WHERE name IN (\n    'require_topic_approval',\n    'require_reply_approval',\n    'num_auto_bump_daily'\n  )\n  GROUP BY category_id\n)\nINSERT INTO\n  category_settings(\n    category_id,\n    require_topic_approval,\n    require_reply_approval,\n    num_auto_bump_daily,\n    created_at,\n    updated_at\n  )\nSELECT * FROM custom_fields\nON CONFLICT (category_id) DO\nUPDATE SET\n  require_topic_approval = EXCLUDED.require_topic_approval,\n  require_reply_approval = EXCLUDED.require_reply_approval,\n  num_auto_bump_daily = EXCLUDED.num_auto_bump_daily,\n  updated_at = NOW()\n")
   -> 0.0005s
-- execute("UPDATE category_settings\nSET num_auto_bump_daily = 0\nWHERE num_auto_bump_daily IS NULL;\n")
   -> 0.0003s
== 20230727015254 ChangeCategorySettingNumAutoBumpDailyDefault: migrated (0.0028s) 

== 20230728055813 DeleteOrphanedDraftUploadReferences: migrating ==============
-- execute("DELETE\nFROM\n  \"upload_references\"\nWHERE\n  \"upload_references\".\"target_type\" = 'Draft' AND\n  \"upload_references\".\"target_id\" NOT IN (\n    SELECT \"drafts\".\"id\" FROM \"drafts\"\n  )\n")
   -> 0.0007s
== 20230728055813 DeleteOrphanedDraftUploadReferences: migrated (0.0011s) =====

== 20230807033021 AddGroupToWebHookEventType: migrating =======================
-- add_column(:web_hook_event_types, :group, :integer)
   -> 0.0004s
== 20230807033021 AddGroupToWebHookEventType: migrated (0.0007s) ==============

== 20230807040058 MoveWebHooksToNewEventIds: migrating ========================
-- execute("INSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 101, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 1;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 102, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 1;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 103, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 1;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 104, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 1;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 105, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 1;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 201, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 2;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 202, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 2;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 203, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 2;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 204, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 2;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 301, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 3;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 302, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 3;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 303, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 3;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 304, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 3;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 305, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 3;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 306, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 3;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 307, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 3;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 308, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 3;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 309, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 3;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 401, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 4;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 402, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 4;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 403, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 4;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 501, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 5;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 502, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 5;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 503, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 5;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 601, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 6;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 602, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 6;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 603, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 6;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 901, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 9;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 902, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 9;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1001, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 10;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1101, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 11;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1102, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 11;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1201, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 12;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1202, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 12;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1301, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 13;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1302, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 13;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1401, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 14;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1402, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 14;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1501, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 15;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1601, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 16;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1701, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 17;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1702, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 17;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1801, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 18;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1802, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 18;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1803, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 18;\n\nINSERT INTO web_hook_event_types_hooks(web_hook_event_type_id, web_hook_id)\nSELECT 1804, web_hook_id FROM web_hook_event_types_hooks WHERE web_hook_event_types_hooks.web_hook_event_type_id = 18;\n\nDELETE FROM web_hook_event_types WHERE id < 100;\n")
   -> 0.0019s
== 20230807040058 MoveWebHooksToNewEventIds: migrated (0.0024s) ===============

== 20230816211907 IncreaseSizeOfSidebarUrls: migrating ========================
-- change_column(:sidebar_urls, :value, :string, {:limit=>1000})
   -> 0.0028s
== 20230816211907 IncreaseSizeOfSidebarUrls: migrated (0.0033s) ===============

== 20230817174049 EnsureJavascriptCacheIsUniquePerTheme: migrating ============
-- remove_index(:javascript_caches, :theme_id)
   -> 0.0022s
-- add_index(:javascript_caches, :theme_id, {:unique=>true, :name=>"index_javascript_caches_on_theme_id"})
   -> 0.0026s
-- remove_index(:javascript_caches, :theme_field_id)
   -> 0.0021s
-- add_index(:javascript_caches, :theme_field_id, {:unique=>true, :name=>"index_javascript_caches_on_theme_field_id"})
   -> 0.0027s
== 20230817174049 EnsureJavascriptCacheIsUniquePerTheme: migrated (0.0102s) ===

== 20230823095931 AddLimitToUserSecondFactorName: migrating ===================
-- execute("UPDATE user_second_factors\nSET name = LEFT(name, 300)\nWHERE name IS NOT NULL AND LENGTH(name) > 300\n")
   -> 0.0006s
-- change_column(:user_second_factors, :name, :string, {:limit=>300})
   -> 0.0097s
== 20230823095931 AddLimitToUserSecondFactorName: migrated (0.0111s) ==========

== 20230823100627 AddLimitToUserSecurityKeyName: migrating ====================
-- execute("UPDATE user_security_keys\nSET name = LEFT(name, 300)\nWHERE name IS NOT NULL AND LENGTH(name) > 300\n")
   -> 0.0007s
-- change_column(:user_security_keys, :name, :string, {:limit=>300})
   -> 0.0198s
== 20230823100627 AddLimitToUserSecurityKeyName: migrated (0.0213s) ===========

== 20230831153649 DeleteUnusedSiteSettings: migrating =========================
-- execute("DELETE\nFROM\n  \"site_settings\"\nWHERE\n  \"name\" IN (\n    'rate_limit_new_user_create_topic',\n    'enable_system_avatars',\n    'check_for_new_features',\n    'allow_user_api_keys'\n  )\n")
   -> 0.0003s
== 20230831153649 DeleteUnusedSiteSettings: migrated (0.0008s) ================

== 20230906030920 ChangeAutoSilenceFastTypersSettingToEnumType: migrating =====
-- execute("UPDATE\n  \"site_settings\"\nSET\n  \"data_type\" = 7\nWHERE\n  \"name\" = 'auto_silence_fast_typers_max_trust_level' AND\n  \"data_type\" = 3\n")
   -> 0.0002s
== 20230906030920 ChangeAutoSilenceFastTypersSettingToEnumType: migrated (0.0006s) 

== 20230907225057 CreateThemeSettingsMigrations: migrating ====================
-- create_table(:theme_settings_migrations)
   -> 0.0068s
-- add_index(:theme_settings_migrations, [:theme_id, :version], {:unique=>true, :name=>"index_theme_settings_migrations_on_theme_id_and_version"})
   -> 0.0030s
-- add_index(:theme_settings_migrations, :theme_field_id, {:unique=>true, :name=>"index_theme_settings_migrations_on_theme_field_id"})
   -> 0.0028s
== 20230907225057 CreateThemeSettingsMigrations: migrated (0.0133s) ===========

== 20230910021213 UpdateCategorySettingApprovalValues: migrating ==============
-- change_column_default(:category_settings, :require_topic_approval, false)
   -> 0.0016s
-- change_column_default(:category_settings, :require_reply_approval, false)
   -> 0.0013s
-- execute("WITH custom_fields AS (\n  SELECT\n    category_id,\n    MAX(\n      CASE WHEN (name = 'require_topic_approval')\n      THEN NULLIF(value, '') ELSE NULL END\n    )::boolean AS require_topic_approval,\n    MAX(\n      CASE WHEN (name = 'require_reply_approval')\n      THEN NULLIF(value, '') ELSE NULL END\n    )::boolean AS require_reply_approval,\n    NOW() AS created_at,\n    NOW() AS updated_at\n  FROM category_custom_fields\n  WHERE name IN (\n    'require_topic_approval',\n    'require_reply_approval'\n  )\n  GROUP BY category_id\n)\nINSERT INTO\n  category_settings(\n    category_id,\n    require_topic_approval,\n    require_reply_approval,\n    created_at,\n    updated_at\n  )\nSELECT * FROM custom_fields\nON CONFLICT (category_id) DO\nUPDATE SET\n  require_topic_approval = EXCLUDED.require_topic_approval,\n  require_reply_approval = EXCLUDED.require_reply_approval,\n  updated_at = NOW()\n")
   -> 0.0005s
-- execute("UPDATE category_settings\nSET require_topic_approval = false\nWHERE require_topic_approval IS NULL;\n")
   -> 0.0002s
-- execute("UPDATE category_settings\nSET require_reply_approval = false\nWHERE require_reply_approval IS NULL;\n")
   -> 0.0002s
== 20230910021213 UpdateCategorySettingApprovalValues: migrated (0.0045s) =====

== 20230913194832 RenameRevokeApiKeysSettings: migrating ======================
-- execute("UPDATE site_settings SET name = 'revoke_api_keys_unused_days' where name = 'revoke_api_keys_days'")
   -> 0.0002s
-- execute("UPDATE site_settings SET name = 'revoke_user_api_keys_unused_days' where name = 'expire_user_api_keys_days'")
   -> 0.0001s
== 20230913194832 RenameRevokeApiKeysSettings: migrated (0.0007s) =============

== 20230926165821 DropPostUploadsTable: migrating =============================
== 20230926165821 DropPostUploadsTable: migrated (0.0018s) ====================

== 20231004020328 MigrateLegacyNavigationMenuSiteSetting: migrating ===========
-- execute("UPDATE site_settings SET value = 'header dropdown' WHERE name = 'navigation_menu' AND value = 'legacy'")
   -> 0.0004s
== 20231004020328 MigrateLegacyNavigationMenuSiteSetting: migrated (0.0009s) ==

== 20231006160650 AddGroupFieldToDirectMessageChannels: migrating =============
-- add_column(:direct_message_channels, :group, :boolean, {:default=>false, :null=>false})
   -> 0.0007s
== 20231006160650 AddGroupFieldToDirectMessageChannels: migrated (0.0011s) ====

== 20231006161051 SetMultiusersDirectMessageChannelsAsGroup: migrating ========
-- execute("      UPDATE direct_message_channels\n      SET \"group\" = true\n      WHERE id IN (\n        SELECT direct_message_channel_id\n        FROM direct_message_users\n        GROUP BY direct_message_channel_id\n        HAVING COUNT(user_id) > 2\n      );\n")
   -> 0.0007s
== 20231006161051 SetMultiusersDirectMessageChannelsAsGroup: migrated (0.0011s) 

== 20231017044708 RemoveEnableExperimentalHashtagAutocompleteSetting: migrating 
-- execute("DELETE FROM site_settings\nWHERE name = 'enable_experimental_hashtag_autocomplete'\n")
   -> 0.0002s
== 20231017044708 RemoveEnableExperimentalHashtagAutocompleteSetting: migrated (0.0006s) 

== 20231017175757 ChangeUserGroupMembershipThroughBadgeScriptBadgeNameFieldToBadge: migrating 
== 20231017175757 ChangeUserGroupMembershipThroughBadgeScriptBadgeNameFieldToBadge: migrated (0.0009s) 

== 20231018225833 AddDarkModeBackgroundToCategories: migrating ================
-- add_column(:categories, :uploaded_background_dark_id, :integer, {:index=>true})
   -> 0.0005s
== 20231018225833 AddDarkModeBackgroundToCategories: migrated (0.0009s) =======

== 20231022224833 UpdateCustomFieldData: migrating ============================
== 20231022224833 UpdateCustomFieldData: migrated (0.0013s) ===================

== 20231024034031 MigrateTlToGroupSettingsAnonymousPostingMinTl: migrating ====
== 20231024034031 MigrateTlToGroupSettingsAnonymousPostingMinTl: migrated (0.0005s) 

== 20231103060018 FixInvalidTopicUserBookmarkedData: migrating ================
== 20231103060018 FixInvalidTopicUserBookmarkedData: migrated (0.0010s) =======

== 20231107014123 MigrateSharedDraftsMinTrustLevelToGroup: migrating ==========
== 20231107014123 MigrateSharedDraftsMinTrustLevelToGroup: migrated (0.0005s) =

== 20231107055903 MigrateMinTrustLevelForHereMentionToGroup: migrating ========
== 20231107055903 MigrateMinTrustLevelForHereMentionToGroup: migrated (0.0006s) 

== 20231110214451 AddsThreadIdToChatDrafts: migrating =========================
-- add_column(:chat_drafts, :thread_id, :bigint)
   -> 0.0004s
== 20231110214451 AddsThreadIdToChatDrafts: migrated (0.0008s) ================

== 20231111201253 RenameExperimentalPasskeysSiteSetting: migrating ============
-- execute("UPDATE site_settings SET name = 'enable_passkeys' WHERE name = 'experimental_passkeys'")
   -> 0.0002s
== 20231111201253 RenameExperimentalPasskeysSiteSetting: migrated (0.0005s) ===

== 20231117182638 FillApproveUnlessAllowedGroupsBasedOnDeprecatedSettings: migrating 
== 20231117182638 FillApproveUnlessAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0004s) 

== 20231120190818 TriggerPostRebakeCategoryStyleQuotes: migrating =============
== 20231120190818 TriggerPostRebakeCategoryStyleQuotes: migrated (0.0034s) ====

== 20231122043756 IncreaseSizeOfTagDescriptions: migrating ====================
-- change_column(:tags, :description, :string, {:limit=>1000})
   -> 0.0107s
== 20231122043756 IncreaseSizeOfTagDescriptions: migrated (0.0113s) ===========

== 20231122152552 FillNewTopicsUnlessAllowedGroupsBasedOnDeprecatedSettings: migrating 
== 20231122152552 FillNewTopicsUnlessAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0011s) 

== 20231122212122 FillEmailInAllowedGroupsBasedOnDeprecatedSettings: migrating 
== 20231122212122 FillEmailInAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0008s) 

== 20231127165331 TriggerAutoLinkingForVideosSincePlaceholder: migrating ======
== 20231127165331 TriggerAutoLinkingForVideosSincePlaceholder: migrated (0.0023s) 

== 20231205013029 FillUploadedAvatarsAllowedGroupsBasedOnDeprecatedSettings: migrating 
== 20231205013029 FillUploadedAvatarsAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0008s) 

== 20231206041353 FillCreateTopicAllowedGroupsBasedOnDeprecatedSettings: migrating 
== 20231206041353 FillCreateTopicAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0005s) 

== 20231207011238 FillEditWikiPostAllowedGroupsBasedOnDeprecatedSettings: migrating 
== 20231207011238 FillEditWikiPostAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0005s) 

== 20231207135641 AddUserChatThreadMembershipsOnThreadIdUserIdIndex: migrating 
-- execute("DROP INDEX CONCURRENTLY IF EXISTS idx_user_chat_thread_memberships_on_thread_id_user_id\n")
   -> 0.0002s
-- execute("CREATE INDEX CONCURRENTLY idx_user_chat_thread_memberships_on_thread_id_user_id\nON user_chat_thread_memberships (thread_id, user_id);\n")
   -> 0.0032s
== 20231207135641 AddUserChatThreadMembershipsOnThreadIdUserIdIndex: migrated (0.0043s) 

== 20231212044856 FillEditPostAllowedGroupsBasedOnDeprecatedSettings: migrating 
== 20231212044856 FillEditPostAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0006s) 

== 20231213060822 FillFlagPostAllowedGroupsBasedOnDeprecatedSettings: migrating 
== 20231213060822 FillFlagPostAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0005s) 

== 20231213103248 FillDeleteAllPostsAndTopicsAllowedGroupsBasedOnDeprecatedSettings: migrating 
== 20231213103248 FillDeleteAllPostsAndTopicsAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0005s) 

== 20231214020814 FillUserCardBackgroundAllowedGroupsBasedOnDeprecatedSettings: migrating 
== 20231214020814 FillUserCardBackgroundAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0004s) 

== 20231214023728 FillInviteAllowedGroupsBasedOnDeprecatedSettings: migrating =
== 20231214023728 FillInviteAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0005s) 

== 20231214031754 FillIgnoreAllowedGroupsBasedOnDeprecatedSettings: migrating =
== 20231214031754 FillIgnoreAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0004s) 

== 20231214061615 FillCreateTagAllowedGroupsBasedOnDeprecatedSettings: migrating 
== 20231214061615 FillCreateTagAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0005s) 

== 20231214180000 AddChatMentionNotifications: migrating ======================
-- create_table(:chat_mention_notifications, {:id=>false})
   -> 0.0008s
-- add_index(:chat_mention_notifications, [:chat_mention_id], {:name=>"index_chat_mention_notifications_on_chat_mention_id"})
   -> 0.0028s
-- add_index(:chat_mention_notifications, [:notification_id], {:unique=>true, :name=>"index_chat_mention_notifications_on_notification_id"})
   -> 0.0024s
== 20231214180000 AddChatMentionNotifications: migrated (0.0066s) =============

== 20231214180001 UpdateRelationshipBetweenChatMentionsAndNotifications: migrating 
== 20231214180001 UpdateRelationshipBetweenChatMentionsAndNotifications: migrated (0.0012s) 

== 20231214180002 UpdateRelationshipBetweenChatMentionsAndNotificationsPostMigrate: migrating 
== 20231214180002 UpdateRelationshipBetweenChatMentionsAndNotificationsPostMigrate: migrated (0.0007s) 

== 20231218081901 FillSendEmailMessagesAllowedGroupsBasedOnDeprecatedSettings: migrating 
== 20231218081901 FillSendEmailMessagesAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0005s) 

== 20231222030024 FillSelfWikiAllowedGroupsBasedOnDeprecatedSettings: migrating 
== 20231222030024 FillSelfWikiAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0005s) 

== 20231227160001 AddTypeAndTargetIdToChatMentions: migrating =================
-- add_column(:chat_mentions, :type, :string, {:null=>true})
   -> 0.0030s
-- add_column(:chat_mentions, :target_id, :integer, {:null=>true})
   -> 0.0003s
-- change_column_null(:chat_mentions, :user_id, true, nil)
   -> 0.0002s
== 20231227160001 AddTypeAndTargetIdToChatMentions: migrated (0.0040s) ========

== 20231227160002 SetTypeAndTargetIdOnChatMentions: migrating =================
== 20231227160002 SetTypeAndTargetIdOnChatMentions: migrated (0.0008s) ========

== 20231227160003 AddAndRemoveIndexesOnChatMentions: migrating ================
-- remove_index(:chat_mentions, {:name=>:chat_mentions_index, :algorithm=>:concurrently, :if_exists=>true})
   -> 0.0069s
-- add_index(:chat_mentions, [:chat_message_id], {:algorithm=>:concurrently, :name=>"index_chat_mentions_on_chat_message_id"})
   -> 0.0030s
-- add_index(:chat_mentions, [:target_id], {:algorithm=>:concurrently, :name=>"index_chat_mentions_on_target_id"})
   -> 0.0028s
== 20231227160003 AddAndRemoveIndexesOnChatMentions: migrated (0.0134s) =======

== 20231227160004 SetTypeAndTargetIdOnChatMentionsPostMigrate: migrating ======
== 20231227160004 SetTypeAndTargetIdOnChatMentionsPostMigrate: migrated (0.0010s) 

== 20231227160005 MakeTypeOnChatMentionsNonNullable: migrating ================
-- change_column_null(:chat_mentions, :type, false, nil)
   -> 0.0003s
== 20231227160005 MakeTypeOnChatMentionsNonNullable: migrated (0.0007s) =======

== 20240104155715 AddEmbedContentCacheToTopicEmbed: migrating =================
-- add_column(:topic_embeds, :embed_content_cache, :text)
   -> 0.0004s
== 20240104155715 AddEmbedContentCacheToTopicEmbed: migrated (0.0008s) ========

== 20240108022138 ChangeEnableAdminSidebarToGroupPostMigration: migrating =====
== 20240108022138 ChangeEnableAdminSidebarToGroupPostMigration: migrated (0.0005s) 

== 20240110040813 FillSkipReviewMediaGroupsBasedOnDeprecatedSetting: migrating 
== 20240110040813 FillSkipReviewMediaGroupsBasedOnDeprecatedSetting: migrated (0.0005s) 

== 20240112021335 SetMaxCleanOrphanUploadsGracePeriodHours: migrating =========
== 20240112021335 SetMaxCleanOrphanUploadsGracePeriodHours: migrated (0.0004s) 

== 20240112043325 FillEmbeddedMediaPostAllowedGroupsBasedOnDeprecatedSetting: migrating 
== 20240112043325 FillEmbeddedMediaPostAllowedGroupsBasedOnDeprecatedSetting: migrated (0.0005s) 

== 20240112073149 FillTagTopicAllowedGroupsBasedOnDeprecatedSettings: migrating 
== 20240112073149 FillTagTopicAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0005s) 

== 20240116043702 CreateTopicHotScores: migrating =============================
-- create_table(:topic_hot_scores)
   -> 0.0046s
-- add_index(:topic_hot_scores, :topic_id, {:unique=>true, :name=>"index_topic_hot_scores_on_topic_id"})
   -> 0.0025s
-- add_index(:topic_hot_scores, [:score, :topic_id], {:unique=>true, :name=>"index_topic_hot_scores_on_score_and_topic_id"})
   -> 0.0025s
== 20240116043702 CreateTopicHotScores: migrated (0.0103s) ====================

== 20240116182229 MigrateLazyLoadCategoriesToGroups: migrating ================
-- execute("UPDATE site_settings\nSET name = 'lazy_load_categories_groups', data_type = 20, value = '0'\nWHERE name = 'lazy_load_categories' AND value = 't'\n")
   -> 0.0003s
-- execute("UPDATE site_settings\nSET name = 'lazy_load_categories_groups', data_type = 20, value = ''\nWHERE name = 'lazy_load_categories' AND value = 'f'\n")
   -> 0.0002s
== 20240116182229 MigrateLazyLoadCategoriesToGroups: migrated (0.0009s) =======

== 20240117090801 FillPostLinksAllowedGroupsBasedOnDeprecatedSettings: migrating 
== 20240117090801 FillPostLinksAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0005s) 

== 20240117093148 FillUserApiKeyAllowedGroupsBasedOnDeprecatedSettings: migrating 
== 20240117093148 FillUserApiKeyAllowedGroupsBasedOnDeprecatedSettings: migrated (0.0005s) 

== 20240118120825 AddThreadsEnabledSiteSetting: migrating =====================
== 20240118120825 AddThreadsEnabledSiteSetting: migrated (0.0023s) ============

== 20240122015626 FillPollCreateAllowedGroupsBasedOnDeprecatedSetting: migrating 
== 20240122015626 FillPollCreateAllowedGroupsBasedOnDeprecatedSetting: migrated (0.0070s) 

== 20240122015630 FillStyleguideAdminOnlyGroups: migrating ====================
== 20240122015630 FillStyleguideAdminOnlyGroups: migrated (0.0015s) ===========

== 20240201170412 FixTagTopicAllowedGroupsSetting: migrating ==================
== 20240201170412 FixTagTopicAllowedGroupsSetting: migrated (0.0013s) =========

== 20240202032242 AddJsonValueToThemeSettings: migrating ======================
-- add_column(:theme_settings, :json_value, :jsonb)
   -> 0.0010s
== 20240202032242 AddJsonValueToThemeSettings: migrated (0.0015s) =============

== 20240202052058 DropBadgeImageColumn: migrating =============================
== 20240202052058 DropBadgeImageColumn: migrated (0.0016s) ====================

== 20240202204030 FixHereMentionAllowedGroupsSetting: migrating ===============
== 20240202204030 FixHereMentionAllowedGroupsSetting: migrated (0.0008s) ======

== 20240204204532 AddUserToPermalink: migrating ===============================
-- add_column(:permalinks, :user_id, :integer)
   -> 0.0004s
== 20240204204532 AddUserToPermalink: migrated (0.0009s) ======================

== 20240212034010 DropDeprecatedColumns: migrating ============================
== 20240212034010 DropDeprecatedColumns: migrated (0.0152s) ===================

== 20240213175713 AddStreamingToMessage: migrating ============================
-- add_column(:chat_messages, :streaming, :boolean, {:null=>false, :default=>false})
   -> 0.0007s
== 20240213175713 AddStreamingToMessage: migrated (0.0011s) ===================

== 20240214135517 FixChatChannelSlugIndex: migrating ==========================
-- remove_index(:chat_channels, :slug)
   -> 0.0028s
-- add_index(:chat_channels, :slug, {:unique=>true, :where=>"slug != ''", :name=>"index_chat_channels_on_slug"})
   -> 0.0052s
== 20240214135517 FixChatChannelSlugIndex: migrated (0.0086s) =================

== 20240216073624 FillProfileBackgroundAllowedGroupsBasedOnDeprecatedSetting: migrating 
== 20240216073624 FillProfileBackgroundAllowedGroupsBasedOnDeprecatedSetting: migrated (0.0008s) 

== 20240219012001 RemoveEnableExperimentalAdminUiGroupsSiteSettings: migrating 
-- execute("DELETE FROM site_settings WHERE name = 'enable_experimental_admin_ui_groups'")
   -> 0.0002s
== 20240219012001 RemoveEnableExperimentalAdminUiGroupsSiteSettings: migrated (0.0006s) 

== 20240223052820 CreateProblemCheckTrackers: migrating =======================
-- create_table(:problem_check_trackers)
   -> 0.0092s
== 20240223052820 CreateProblemCheckTrackers: migrated (0.0097s) ==============

== 20240301033753 DeleteOldBookmarkReminderSetting: migrating =================
== 20240301033753 DeleteOldBookmarkReminderSetting: migrated (0.0006s) ========

== 20240301100413 AddForceToThreads: migrating ================================
-- add_column(:chat_threads, :force, :boolean, {:null=>false, :default=>false})
   -> 0.0006s
== 20240301100413 AddForceToThreads: migrated (0.0010s) =======================

== 20240304030429 TopicIdOnIncomingEmailIndex: migrating ======================
-- remove_index(:incoming_emails, :topic_id, {:if_exists=>true})
   -> 0.0029s
-- add_index(:incoming_emails, :topic_id, {:algorithm=>:concurrently, :name=>"index_incoming_emails_on_topic_id"})
   -> 0.0031s
== 20240304030429 TopicIdOnIncomingEmailIndex: migrated (0.0066s) =============

== 20240306063428 AddIndexesToNotifications: migrating ========================
-- execute("DROP INDEX IF EXISTS index_notifications_user_menu_ordering\n")
   -> 0.0002s
-- execute("CREATE INDEX CONCURRENTLY index_notifications_user_menu_ordering\nON notifications (\n  user_id,\n  (high_priority AND NOT read) DESC,\n  (NOT read) DESC,\n  created_at DESC\n);\n")
   -> 0.0035s
-- execute("DROP INDEX IF EXISTS index_notifications_user_menu_ordering_deprioritized_likes\n")
   -> 0.0002s
-- execute("CREATE INDEX CONCURRENTLY index_notifications_user_menu_ordering_deprioritized_likes\nON notifications (\n  user_id,\n  (high_priority AND NOT read) DESC,\n  (NOT read AND notification_type NOT IN (5,19,25)) DESC,\n  created_at DESC\n);\n")
   -> 0.0038s
== 20240306063428 AddIndexesToNotifications: migrated (0.0083s) ===============

== 20240307231053 AddTopicsUnreadWhenClosedToUserOptions: migrating ===========
-- add_column(:user_options, :topics_unread_when_closed, :boolean, {:default=>true, :null=>false})
   -> 0.0008s
== 20240307231053 AddTopicsUnreadWhenClosedToUserOptions: migrated (0.0012s) ==

== 20240311015942 CreateAdminNotices: migrating ===============================
-- create_table(:admin_notices)
   -> 0.0121s
== 20240311015942 CreateAdminNotices: migrated (0.0127s) ======================

== 20240326200232 AddCustomHomepageThemeModifiers: migrating ==================
-- add_column(:theme_modifier_sets, :custom_homepage, :boolean, {:null=>true})
   -> 0.0004s
== 20240326200232 AddCustomHomepageThemeModifiers: migrated (0.0009s) =========

== 20240327000440 ReplacePostReplyIndex: migrating ============================
-- execute("DROP INDEX CONCURRENTLY IF EXISTS \"index_posts_on_topic_id_and_reply_to_post_number\"\n")
   -> 0.0002s
-- execute("CREATE INDEX CONCURRENTLY IF NOT EXISTS \"index_posts_on_topic_id_and_reply_to_post_number\"\nON \"posts\" (\"topic_id\", \"reply_to_post_number\")\n")
   -> 0.0036s
-- execute("DROP INDEX CONCURRENTLY IF EXISTS \"index_posts_on_reply_to_post_number\"\n")
   -> 0.0047s
== 20240327000440 ReplacePostReplyIndex: migrated (0.0092s) ===================

== 20240327043323 DisableAdminSidebarForExistingSites: migrating ==============
-- execute("INSERT INTO site_settings(name, data_type, value, created_at, updated_at)\nVALUES('admin_sidebar_enabled_groups', 20, '-1', NOW(), NOW())\nON CONFLICT (name) DO NOTHING\n")
   -> 0.0003s
== 20240327043323 DisableAdminSidebarForExistingSites: migrated (0.0012s) =====

== 20240401054228 AddDetailsToProblemCheckTrackers: migrating =================
-- add_column(:problem_check_trackers, :details, :json, {:default=>{}})
   -> 0.0006s
== 20240401054228 AddDetailsToProblemCheckTrackers: migrated (0.0010s) ========

== 20240404034232 RemoveExperimentalObjectsTypeForThemeSettings: migrating ====
-- execute("DELETE FROM site_settings WHERE name = 'experimental_objects_type_for_theme_settings'")
   -> 0.0002s
== 20240404034232 RemoveExperimentalObjectsTypeForThemeSettings: migrated (0.0005s) 

== 20240408140000 DropNotificationIdFromChatMentions: migrating ===============
== 20240408140000 DropNotificationIdFromChatMentions: migrated (0.0013s) ======

== 20240409060201 AddThreadTitlePromptToUserChatThreadMemberships: migrating ==
-- add_column(:user_chat_thread_memberships, :thread_title_prompt_seen, :boolean, {:default=>false, :null=>false})
   -> 0.0005s
== 20240409060201 AddThreadTitlePromptToUserChatThreadMemberships: migrated (0.0009s) 

== 20240409093348 AddShowThreadTitlePromptsToUserOptions: migrating ===========
-- add_column(:user_options, :show_thread_title_prompts, :boolean)
   -> 0.0004s
== 20240409093348 AddShowThreadTitlePromptsToUserOptions: migrated (0.0008s) ==

== 20240410130000 DropUserIdFromChatMentions: migrating =======================
== 20240410130000 DropUserIdFromChatMentions: migrated (0.0011s) ==============

== 20240416105733 AddRankToPollVotes: migrating ===============================
-- add_column(:poll_votes, :rank, :integer, {:null=>false, :default=>0})
   -> 0.0005s
== 20240416105733 AddRankToPollVotes: migrated (0.0008s) ======================

== 20240422015830 RemoveAdminGuideTooltipFromSeenPopups: migrating ============
-- execute("UPDATE user_options SET seen_popups = ARRAY_REMOVE(user_options2.seen_popups, 6)\nFROM (SELECT user_id, seen_popups FROM user_options) AS user_options2\nWHERE 6 = ANY (user_options.seen_popups)\n  AND user_options.user_id = user_options2.user_id\n")
   -> 0.0006s
== 20240422015830 RemoveAdminGuideTooltipFromSeenPopups: migrated (0.0010s) ===

== 20240422042830 AddExcerptToChatMessages: migrating =========================
-- add_column(:chat_messages, :excerpt, :string, {:limit=>1000, :null=>true})
   -> 0.0003s
== 20240422042830 AddExcerptToChatMessages: migrated (0.0007s) ================

== 20240423013808 AddVisibilityReasonIdToTopics: migrating ====================
-- add_column(:topics, :visibility_reason_id, :integer)
   -> 0.0004s
== 20240423013808 AddVisibilityReasonIdToTopics: migrated (0.0007s) ===========

== 20240423054323 CreateFlags: migrating ======================================
-- create_table(:flags)
   -> 0.0072s
== 20240423054323 CreateFlags: migrated (0.0089s) =============================

== 20240425133407 DropChatChannelsLastMessageSentAt: migrating ================
== 20240425133407 DropChatChannelsLastMessageSentAt: migrated (0.0017s) =======

== 20240430051551 AddUserIdToEmbeddableHosts: migrating =======================
-- add_column(:embeddable_hosts, :user_id, :integer)
   -> 0.0004s
== 20240430051551 AddUserIdToEmbeddableHosts: migrated (0.0007s) ==============

== 20240430052017 CreateEmbeddableHostTags: migrating =========================
-- create_table(:embeddable_host_tags)
   -> 0.0039s
-- add_index(:embeddable_host_tags, :embeddable_host_id, {:name=>"index_embeddable_host_tags_on_embeddable_host_id"})
   -> 0.0027s
-- add_index(:embeddable_host_tags, :tag_id, {:name=>"index_embeddable_host_tags_on_tag_id"})
   -> 0.0026s
-- add_index(:embeddable_host_tags, [:embeddable_host_id, :tag_id], {:unique=>true, :name=>"index_embeddable_host_tags_on_embeddable_host_id_and_tag_id"})
   -> 0.0026s
== 20240430052017 CreateEmbeddableHostTags: migrated (0.0125s) ================

== 20240430185434 FixWatchedWordsWithoutAction: migrating =====================
-- execute("UPDATE watched_words\nSET action = 2\nWHERE action = 0\nAND LENGTH(COALESCE(replacement, '')) = 0\n")
   -> 0.0005s
-- execute("UPDATE watched_words\nSET action = 5\nWHERE action = 0\n")
   -> 0.0002s
-- execute("UPDATE watched_word_groups\nSET action = ww.action\nFROM watched_words ww\nWHERE ww.watched_word_group_id = watched_word_groups.id\nAND ww.action != 0\nAND watched_word_groups.action = 0\n")
   -> 0.0004s
== 20240430185434 FixWatchedWordsWithoutAction: migrated (0.0015s) ============

== 20240506035024 ClearOrphanedDraftUploadReferences: migrating ===============
-- execute("DELETE\nFROM\n  \"upload_references\"\nWHERE\n  \"upload_references\".\"target_type\" = 'Draft' AND\n  \"upload_references\".\"target_id\" NOT IN (\n    SELECT \"drafts\".\"id\" FROM \"drafts\"\n  )\n")
   -> 0.0003s
== 20240506035024 ClearOrphanedDraftUploadReferences: migrated (0.0006s) ======

== 20240506125839 AddHtmlToWatchedWords: migrating ============================
-- add_column(:watched_words, :html, :boolean, {:default=>false, :null=>false})
   -> 0.0006s
== 20240506125839 AddHtmlToWatchedWords: migrated (0.0010s) ===================

== 20240507112651 SwitchTopicAutomationCustomFieldsToJson: migrating ==========
-- execute("DELETE FROM topic_custom_fields\nWHERE name = 'discourse_automation_ids'\n")
   -> 0.0002s
== 20240507112651 SwitchTopicAutomationCustomFieldsToJson: migrated (0.0010s) =

== 20240507112751 SwitchUserAutomationCustomFieldsToJson: migrating ===========
-- execute("DELETE FROM user_custom_fields\nWHERE name = 'discourse_automation_ids'\n")
   -> 0.0002s
== 20240507112751 SwitchUserAutomationCustomFieldsToJson: migrated (0.0010s) ==

== 20240507112851 SwitchTopicAutomationTriggeredIdsCustomFieldsToJson: migrating 
-- execute("DELETE FROM topic_custom_fields\nWHERE name = 'auto_responder_triggered_ids'\n")
   -> 0.0002s
== 20240507112851 SwitchTopicAutomationTriggeredIdsCustomFieldsToJson: migrated (0.0007s) 

== 20240507112951 DropAutomationIdsCustomFieldIndexes: migrating ==============
-- remove_index(:topic_custom_fields, {:name=>:idx_topic_custom_fields_discourse_automation_unique_id_partial, :if_exists=>true})
   -> 0.0043s
-- remove_index(:user_custom_fields, {:name=>:idx_user_custom_fields_discourse_automation_unique_id_partial, :if_exists=>true})
   -> 0.0032s
-- remove_index(:post_custom_fields, {:name=>:idx_post_custom_fields_discourse_automation_unique_id_partial, :if_exists=>true})
   -> 0.0048s
== 20240507112951 DropAutomationIdsCustomFieldIndexes: migrated (0.0128s) =====

== 20240510073417 IncreaseExternalAvatarUrlLimit: migrating ===================
-- change_column(:single_sign_on_records, :external_avatar_url, :string, {:limit=>1500})
   -> 0.0005s
== 20240510073417 IncreaseExternalAvatarUrlLimit: migrated (0.0010s) ==========

== 20240516145911 UpdateUserOptionsForThreadTitlePrompts: migrating ===========
-- change_column_default(:user_options, :show_thread_title_prompts, true)
   -> 0.0036s
-- change_column_null(:user_options, :show_thread_title_prompts, false, nil)
   -> 0.0004s
== 20240516145911 UpdateUserOptionsForThreadTitlePrompts: migrated (0.0068s) ==

== 20240517014119 AddTargetToProblemCheckTrackers: migrating ==================
-- add_column(:problem_check_trackers, :target, :string, {:null=>true})
   -> 0.0004s
== 20240517014119 AddTargetToProblemCheckTrackers: migrated (0.0008s) =========

== 20240517051933 DisambiguateProblemCheckTrackerUniqueness: migrating ========
-- remove_index(:problem_check_trackers, {:name=>"index_problem_check_trackers_on_identifier"})
   -> 0.0004s
-- add_index(:problem_check_trackers, [:identifier, :target], {:unique=>true, :name=>"index_problem_check_trackers_on_identifier_and_target"})
   -> 0.0031s
== 20240517051933 DisambiguateProblemCheckTrackerUniqueness: migrated (0.0040s) 

== 20240520060901 AddRequirementToUserFields: migrating =======================
-- add_column(:user_fields, :requirement, :integer, {:null=>false, :default=>0})
   -> 0.0008s
-- execute("UPDATE user_fields\nSET requirement =\n  (CASE WHEN required IS NOT TRUE THEN 0 ELSE 2 END)\n")
   -> 0.0003s
== 20240520060901 AddRequirementToUserFields: migrated (0.0018s) ==============

== 20240527015009 AddTopicViewStats: migrating ================================
-- create_table(:topic_view_stats)
   -> 0.0043s
-- add_index(:topic_view_stats, [:topic_id, :viewed_at], {:unique=>true, :name=>"index_topic_view_stats_on_topic_id_and_viewed_at"})
   -> 0.0027s
-- add_index(:topic_view_stats, [:viewed_at, :topic_id], {:name=>"index_topic_view_stats_on_viewed_at_and_topic_id"})
   -> 0.0022s
== 20240527015009 AddTopicViewStats: migrated (0.0099s) =======================

== 20240527055057 AddScoreTypeToFlags: migrating ==============================
-- add_column(:flags, :score_type, :boolean, {:default=>false, :null=>false})
   -> 0.0006s
== 20240527055057 AddScoreTypeToFlags: migrated (0.0010s) =====================

== 20240531053226 CreateUserRequiredFieldsVersion: migrating ==================
-- create_table(:user_required_fields_versions)
   -> 0.0034s
-- add_column(:users, :required_fields_version, :integer)
   -> 0.0004s
== 20240531053226 CreateUserRequiredFieldsVersion: migrated (0.0043s) =========

== 20240603234529 CreateUserPasswords: migrating ==============================
-- create_table(:user_passwords, {:id=>:integer})
   -> 0.0037s
-- add_index(:user_passwords, [:user_id], {:unique=>true, :where=>"password_expired_at IS NULL", :name=>"index_user_passwords_on_user_id"})
   -> 0.0039s
-- add_index(:user_passwords, [:user_id, :password_hash], {:unique=>true, :name=>"index_user_passwords_on_user_id_and_password_hash"})
   -> 0.0022s
-- add_index(:user_passwords, [:user_id, :password_expired_at, :password_hash], {:name=>"idx_user_passwords_on_user_id_and_expired_at_and_hash"})
   -> 0.0022s
== 20240603234529 CreateUserPasswords: migrated (0.0127s) =====================

== 20240606003822 ReorderFlags: migrating =====================================
== 20240606003822 ReorderFlags: migrated (0.0008s) ============================

== 20240610150449 LimitTagGroupNameLength: migrating ==========================
-- change_column(:tag_groups, :name, :string, {:limit=>100})
   -> 0.0030s
== 20240610150449 LimitTagGroupNameLength: migrated (0.0037s) =================

== 20240612063735 AddFieldTypeEnumToUserFields: migrating =====================
-- add_column(:user_fields, :field_type_enum, :integer)
   -> 0.0005s
-- execute("UPDATE user_fields\nSET field_type_enum =\n  CASE\n    WHEN field_type = 'text' THEN 0\n    WHEN field_type = 'confirm' THEN 1\n    WHEN field_type = 'dropdown' THEN 2\n    WHEN field_type = 'multiselect' THEN 3\n  END\n")
   -> 0.0003s
-- change_column_null(:user_fields, :field_type, true, nil)
   -> 0.0002s
-- change_column_null(:user_fields, :field_type_enum, false, nil)
   -> 0.0002s
== 20240612063735 AddFieldTypeEnumToUserFields: migrated (0.0019s) ============

== 20240612073116 SwapFieldTypeWithFieldTypeEnumOnUserFields: migrating =======
== 20240612073116 SwapFieldTypeWithFieldTypeEnumOnUserFields: migrated (0.0003s) 

== 20240619123052 CreateWebHookEventsDailyAggregates: migrating ===============
-- create_table(:web_hook_events_daily_aggregates)
   -> 0.0064s
== 20240619123052 CreateWebHookEventsDailyAggregates: migrated (0.0068s) ======

== 20240620024938 AddBackFieldTypeEnumToUserFields: migrating =================
== 20240620024938 AddBackFieldTypeEnumToUserFields: migrated (0.0020s) ========

== 20240627125112 RemoveInvalidCspScriptSrcSiteSettingValues: migrating =======
== 20240627125112 RemoveInvalidCspScriptSrcSiteSettingValues: migrated (0.0006s) 

== 20240627155730 CreateRedeliveringWebhookEvents: migrating ==================
-- create_table(:redelivering_webhook_events)
   -> 0.0062s
== 20240627155730 CreateRedeliveringWebhookEvents: migrated (0.0067s) =========

== 20240705134114 ClearOrphanedDraftUploadReferences2: migrating ==============
-- execute("DELETE\nFROM\n  \"upload_references\"\nWHERE\n  \"upload_references\".\"target_type\" = 'Draft' AND\n  \"upload_references\".\"target_id\" NOT IN (\n    SELECT \"drafts\".\"id\" FROM \"drafts\"\n  )\n")
   -> 0.0003s
== 20240705134114 ClearOrphanedDraftUploadReferences2: migrated (0.0007s) =====

== 20240705153533 AddUserAgentToSearchLogs: migrating =========================
-- add_column(:search_logs, :user_agent, :string, {:null=>true, :limit=>2000})
   -> 0.0004s
== 20240705153533 AddUserAgentToSearchLogs: migrated (0.0008s) ================

== 20240709010639 RemoveCrossOriginUnsafeNoneReferrersSetting: migrating ======
-- execute("DELETE FROM site_settings\nWHERE name = 'cross_origin_opener_unsafe_none_referrers'\n")
   -> 0.0002s
== 20240709010639 RemoveCrossOriginUnsafeNoneReferrersSetting: migrated (0.0006s) 

== 20240709015048 RemoveLoggingProviderSiteSetting: migrating =================
-- execute("DELETE FROM site_settings WHERE name = 'logging_provider'")
   -> 0.0002s
== 20240709015048 RemoveLoggingProviderSiteSetting: migrated (0.0005s) ========

== 20240711123755 DropCompiledJsFromTranslationOverrides: migrating ===========
== 20240711123755 DropCompiledJsFromTranslationOverrides: migrated (0.0015s) ==

== 20240711153837 AddCreatedBySdkToChatMessages: migrating ====================
-- add_column(:chat_messages, :created_by_sdk, :boolean)
   -> 0.0004s
== 20240711153837 AddCreatedBySdkToChatMessages: migrated (0.0008s) ===========

== 20240711154622 UpdateChatMessagesCreatedBySdk: migrating ===================
-- change_column_default(:chat_messages, :created_by_sdk, false)
   -> 0.0020s
-- change_column_null(:chat_messages, :created_by_sdk, false)
   -> 0.0003s
== 20240711154622 UpdateChatMessagesCreatedBySdk: migrated (0.0031s) ==========

== 20240712050324 DefaultGithubOneboxToken: migrating =========================
-- execute("DELETE FROM site_settings WHERE name = 'github_onebox_access_token'\n")
   -> 0.0002s
== 20240712050324 DefaultGithubOneboxToken: migrated (0.0008s) ================

== 20240714231226 DuplicateFlagsCustomTypeToRequireMessage: migrating =========
-- add_column(:flags, :require_message, :boolean, {:default=>false, :null=>false})
   -> 0.0007s
== 20240714231226 DuplicateFlagsCustomTypeToRequireMessage: migrated (0.0012s) 

== 20240714231516 DropCustomTypeFromFlags: migrating ==========================
== 20240714231516 DropCustomTypeFromFlags: migrated (0.0015s) =================

== 20240715073605 AddSmtpSslModeToGroups: migrating ===========================
-- add_column(:groups, :smtp_ssl_mode, :integer, {:default=>0, :null=>false})
   -> 0.0006s
-- execute("UPDATE groups SET smtp_ssl_mode = (CASE WHEN smtp_ssl THEN 2 ELSE 0 END)\n")
   -> 0.0003s
== 20240715073605 AddSmtpSslModeToGroups: migrated (0.0049s) ==================

== 20240717053710 DropGroupsSmtpSsl: migrating ================================
== 20240717053710 DropGroupsSmtpSsl: migrated (0.0015s) =======================

== 20240717171840 RenameChatPreferredMobileIndexSetting: migrating ============
-- execute("UPDATE site_settings SET name = 'chat_preferred_index' WHERE name = 'chat_preferred_mobile_index'")
   -> 0.0002s
== 20240717171840 RenameChatPreferredMobileIndexSetting: migrated (0.0006s) ===

== 20240722025822 AddUserIdToCustomEmojis: migrating ==========================
-- add_column(:custom_emojis, :user_id, :integer, {:null=>false, :default=>-1})
   -> 0.0006s
== 20240722025822 AddUserIdToCustomEmojis: migrated (0.0010s) =================

== 20240723030506 AddPostIdIndexToUserHistories: migrating ====================
-- remove_index(:user_histories, :post_id, {:if_exists=>true})
   -> 0.0027s
-- add_index(:user_histories, :post_id, {:algorithm=>:concurrently})
   -> 0.0037s
== 20240723030506 AddPostIdIndexToUserHistories: migrated (0.0070s) ===========

== 20240724021732 AddLoginMethodToUserAuthTokens: migrating ===================
-- add_column(:user_auth_tokens, :authenticated_with_oauth, :boolean, {:default=>false})
   -> 0.0006s
== 20240724021732 AddLoginMethodToUserAuthTokens: migrated (0.0010s) ==========

== 20240725042522 RemoveExperimentalFlagsAdminPageSiteSetting: migrating ======
-- execute("DELETE FROM site_settings WHERE name = 'experimental_flags_admin_page_enabled_groups'")
   -> 0.0002s
== 20240725042522 RemoveExperimentalFlagsAdminPageSiteSetting: migrated (0.0005s) 

== 20240729084803 CreateUserApiKeyClients: migrating ==========================
-- create_table(:user_api_key_clients)
   -> 0.0059s
-- add_index(:user_api_key_clients, [:client_id], {:unique=>true})
   -> 0.0024s
-- execute("INSERT INTO user_api_key_clients (client_id, application_name, created_at, updated_at)\n             SELECT client_id, application_name, created_at, updated_at\n             FROM user_api_keys")
   -> 0.0005s
-- add_column(:user_api_keys, :user_api_key_client_id, :bigint, {:null=>true})
   -> 0.0004s
-- add_index(:user_api_keys, :user_api_key_client_id)
   -> 0.0024s
-- execute("UPDATE user_api_keys keys\n             SET user_api_key_client_id = clients.id\n             FROM user_api_key_clients clients\n             WHERE clients.client_id = keys.client_id")
   -> 0.0006s
-- change_column_null(:user_api_keys, :client_id, true)
   -> 0.0003s
-- change_column_null(:user_api_keys, :application_name, true)
   -> 0.0002s
== 20240729084803 CreateUserApiKeyClients: migrated (0.0133s) =================

== 20240731143458 RemoveChatDefaultChannelId: migrating =======================
-- execute("DELETE FROM site_settings WHERE name = 'chat_default_channel_id'")
   -> 0.0002s
== 20240731143458 RemoveChatDefaultChannelId: migrated (0.0005s) ==============

== 20240731190511 UpdateInvalidAllowedIframeValues: migrating =================
== 20240731190511 UpdateInvalidAllowedIframeValues: migrated (0.0005s) ========

== 20240807024301 UpdateDeleteMergedStubTopicsAfterDaysSetting: migrating =====
-- execute("UPDATE site_settings SET value = '-1' WHERE name = 'delete_merged_stub_topics_after_days' AND value = '0'")
   -> 0.0002s
== 20240807024301 UpdateDeleteMergedStubTopicsAfterDaysSetting: migrated (0.0005s) 

== 20240815234500 RemoveGlimmerHeaderModeSetting: migrating ===================
-- execute("DELETE FROM site_settings\nWHERE name = 'glimmer_header_mode'\n")
   -> 0.0002s
== 20240815234500 RemoveGlimmerHeaderModeSetting: migrated (0.0005s) ==========

== 20240818113758 RemoveAllButMostRecentUserPassword: migrating ===============
-- execute("DELETE FROM user_passwords WHERE id NOT IN ( SELECT DISTINCT ON (user_id) id FROM user_passwords ORDER BY user_id, password_expired_at DESC NULLS FIRST );")
   -> 0.0006s
== 20240818113758 RemoveAllButMostRecentUserPassword: migrated (0.0010s) ======

== 20240819130737 UpdateUniqueIndexOnUserPasswords: migrating =================
-- remove_index(:user_passwords, [:user_id], {:unique=>true, :where=>"password_expired_at IS NULL", :algorithm=>:concurrently, :if_exists=>true})
   -> 0.0078s
-- add_index(:user_passwords, [:user_id], {:unique=>true, :algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0033s
== 20240819130737 UpdateUniqueIndexOnUserPasswords: migrated (0.0118s) ========

== 20240820123401 AlterNotificationsIdSequenceToBigint: migrating =============
-- execute("ALTER SEQUENCE notifications_id_seq AS bigint")
   -> 0.0004s
== 20240820123401 AlterNotificationsIdSequenceToBigint: migrated (0.0008s) ====

== 20240820123402 AddBigIntNotificationsId: migrating =========================
-- execute("SELECT data_type FROM information_schema.columns WHERE table_name = 'notifications' AND column_name = 'id' LIMIT 1")
   -> 0.0023s
-- execute("ALTER TABLE notifications ADD COLUMN new_id BIGINT NOT NULL DEFAULT 0")
   -> 0.0005s
-- execute("CREATE FUNCTION mirror_notifications_id() RETURNS trigger AS $$ BEGIN NEW.new_id = NEW.id; RETURN NEW; END; $$ LANGUAGE plpgsql")
   -> 0.0004s
-- execute("CREATE TRIGGER notifications_new_id_trigger BEFORE INSERT ON notifications FOR EACH ROW EXECUTE PROCEDURE mirror_notifications_id()")
   -> 0.0003s
== 20240820123402 AddBigIntNotificationsId: migrated (0.0041s) ================

== 20240820123403 CopyNotificationsIdValues: migrating ========================
-- execute("SELECT data_type FROM information_schema.columns WHERE table_name = 'notifications' AND column_name = 'id' LIMIT 1")
   -> 0.0021s
-- execute("SELECT MIN(id), MAX(id) FROM notifications")
   -> 0.0010s
-- execute("UPDATE notifications\nSET new_id = id\nWHERE id >= 1 AND id < 10001 AND new_id != id\n")
   -> 0.0142s
== 20240820123403 CopyNotificationsIdValues: migrated (0.0180s) ===============

== 20240820123404 CopyNotificationsIdIndexes: migrating =======================
-- execute("SELECT data_type FROM information_schema.columns WHERE table_name = 'notifications' AND column_name = 'id' LIMIT 1")
   -> 0.0022s
-- execute("SELECT indexname, indexdef FROM pg_indexes WHERE tablename = 'notifications' AND indexdef SIMILAR TO '%\\mid\\M%' AND schemaname = 'public'")
   -> 0.0028s
-- execute("DROP INDEX CONCURRENTLY IF EXISTS notifications_pkey_bigint")
   -> 0.0002s
-- execute("CREATE UNIQUE INDEX CONCURRENTLY notifications_pkey_bigint ON public.notifications USING btree (new_id)")
   -> 0.0039s
-- execute("DROP INDEX CONCURRENTLY IF EXISTS index_notifications_read_or_not_high_priority_bigint")
   -> 0.0002s
-- execute("CREATE INDEX CONCURRENTLY index_notifications_read_or_not_high_priority_bigint ON public.notifications USING btree (user_id, new_id DESC, read, topic_id) WHERE (read OR (high_priority = false))")
   -> 0.0034s
-- execute("DROP INDEX CONCURRENTLY IF EXISTS index_notifications_unique_unread_high_priority_bigint")
   -> 0.0002s
-- execute("CREATE UNIQUE INDEX CONCURRENTLY index_notifications_unique_unread_high_priority_bigint ON public.notifications USING btree (user_id, new_id) WHERE ((NOT read) AND (high_priority = true))")
   -> 0.0029s
== 20240820123404 CopyNotificationsIdIndexes: migrated (0.0168s) ==============

== 20240820123405 SwapBigIntNotificationsId: migrating ========================
-- execute("SELECT data_type FROM information_schema.columns WHERE table_name = 'notifications' AND column_name = 'id' LIMIT 1")
   -> 0.0020s
-- execute("DROP TRIGGER notifications_new_id_trigger ON notifications")
   -> 0.0004s
-- execute("DROP FUNCTION mirror_notifications_id()")
   -> 0.0003s
-- execute("ALTER TABLE notifications ALTER COLUMN id DROP DEFAULT")
   -> 0.0003s
-- execute("ALTER TABLE notifications ALTER COLUMN new_id SET DEFAULT nextval('notifications_id_seq'::regclass)")
   -> 0.0004s
-- execute("ALTER SEQUENCE notifications_id_seq OWNED BY notifications.new_id")
   -> 0.0002s
-- execute("ALTER TABLE notifications RENAME COLUMN id TO old_id")
   -> 0.0001s
-- execute("ALTER TABLE notifications RENAME COLUMN new_id TO id")
   -> 0.0001s
-- execute("ALTER TABLE notifications DROP CONSTRAINT notifications_pkey")
   -> 0.0003s
-- execute("ALTER TABLE notifications ADD CONSTRAINT notifications_pkey PRIMARY KEY USING INDEX notifications_pkey_bigint")
   -> 0.0003s
-- execute("ALTER TABLE notifications ALTER COLUMN old_id DROP NOT NULL")
   -> 0.0001s
== 20240820123405 SwapBigIntNotificationsId: migrated (0.0084s) ===============

== 20240820123406 DropOldNotificationIdIndexes: migrating =====================
-- execute("SELECT indexname, indexdef FROM pg_indexes WHERE tablename = 'notifications' AND indexdef SIMILAR TO '%\\mold_id\\M%'")
   -> 0.0020s
-- execute("DROP INDEX CONCURRENTLY IF EXISTS index_notifications_read_or_not_high_priority")
   -> 0.0042s
-- execute("DROP INDEX CONCURRENTLY IF EXISTS index_notifications_unique_unread_high_priority")
   -> 0.0042s
-- execute("SELECT indexname, indexdef FROM pg_indexes WHERE tablename = 'notifications' AND indexdef SIMILAR TO '%\\mid\\M%' AND schemaname = 'public'")
   -> 0.0020s
-- execute("ALTER INDEX index_notifications_read_or_not_high_priority_bigint RENAME TO index_notifications_read_or_not_high_priority")
   -> 0.0003s
-- execute("ALTER INDEX index_notifications_unique_unread_high_priority_bigint RENAME TO index_notifications_unique_unread_high_priority")
   -> 0.0002s
== 20240820123406 DropOldNotificationIdIndexes: migrated (0.0136s) ============

== 20240826121501 AddBigIntShelvedNotificationsNotificationId: migrating ======
-- execute("ALTER TABLE shelved_notifications ADD COLUMN new_notification_id BIGINT NOT NULL DEFAULT 0")
   -> 0.0005s
-- execute("CREATE FUNCTION mirror_user_badges_notification_id() RETURNS trigger AS $$ BEGIN NEW.new_notification_id = NEW.notification_id; RETURN NEW; END; $$ LANGUAGE plpgsql")
   -> 0.0003s
-- execute("CREATE TRIGGER user_badges_new_notification_id_trigger BEFORE INSERT ON shelved_notifications FOR EACH ROW EXECUTE PROCEDURE mirror_user_badges_notification_id()")
   -> 0.0003s
== 20240826121501 AddBigIntShelvedNotificationsNotificationId: migrated (0.0015s) 

== 20240826121502 CopyShelvedNotificationsNotificationIdValues: migrating =====
-- execute("SELECT MIN(id), MAX(id) FROM shelved_notifications")
   -> 0.0005s
== 20240826121502 CopyShelvedNotificationsNotificationIdValues: migrated (0.0009s) 

== 20240826121503 CopyShelvedNotificationsNotificationIdIndexes: migrating ====
-- execute("DROP INDEX CONCURRENTLY IF EXISTS index_shelved_notifications_on_new_notification_id")
   -> 0.0002s
-- execute("CREATE INDEX CONCURRENTLY index_shelved_notifications_on_new_notification_id ON shelved_notifications (new_notification_id)")
   -> 0.0031s
== 20240826121503 CopyShelvedNotificationsNotificationIdIndexes: migrated (0.0038s) 

== 20240826121504 SwapBigIntShelvedNotificationsNotificationId: migrating =====
-- execute("DROP TRIGGER user_badges_new_notification_id_trigger ON shelved_notifications")
   -> 0.0003s
-- execute("DROP FUNCTION mirror_user_badges_notification_id()")
   -> 0.0002s
-- execute("ALTER TABLE shelved_notifications ALTER COLUMN new_notification_id DROP DEFAULT")
   -> 0.0002s
-- execute("ALTER TABLE shelved_notifications RENAME COLUMN notification_id TO old_notification_id")
   -> 0.0002s
-- execute("ALTER TABLE shelved_notifications RENAME COLUMN new_notification_id TO notification_id")
   -> 0.0001s
-- execute("ALTER TABLE shelved_notifications ALTER COLUMN old_notification_id DROP NOT NULL")
   -> 0.0001s
-- execute("DROP INDEX IF EXISTS index_shelved_notifications_on_notification_id")
   -> 0.0003s
-- execute("ALTER INDEX index_shelved_notifications_on_new_notification_id RENAME TO index_shelved_notifications_on_notification_id")
   -> 0.0002s
== 20240826121504 SwapBigIntShelvedNotificationsNotificationId: migrated (0.0054s) 

== 20240826121505 AddBigIntUserBadgesNotificationId: migrating ================
-- execute("ALTER TABLE user_badges ADD COLUMN new_notification_id BIGINT")
   -> 0.0004s
-- execute("CREATE FUNCTION mirror_user_badges_notification_id() RETURNS trigger AS $$ BEGIN NEW.new_notification_id = NEW.notification_id; RETURN NEW; END; $$ LANGUAGE plpgsql")
   -> 0.0003s
-- execute("CREATE TRIGGER user_badges_new_notification_id_trigger BEFORE INSERT ON user_badges FOR EACH ROW EXECUTE PROCEDURE mirror_user_badges_notification_id()")
   -> 0.0003s
== 20240826121505 AddBigIntUserBadgesNotificationId: migrated (0.0015s) =======

== 20240826121506 CopyUserBadgesNotificationIdValues: migrating ===============
-- execute("SELECT MIN(id), MAX(id) FROM user_badges")
   -> 0.0008s
-- execute("UPDATE user_badges SET new_notification_id = notification_id WHERE id >= 1 AND id < 10001 AND notification_id IS NOT NULL AND new_notification_id IS NULL")
   -> 0.0037s
== 20240826121506 CopyUserBadgesNotificationIdValues: migrated (0.0051s) ======

== 20240826121507 SwapBigIntUserBadgesNotificationId: migrating ===============
-- execute("DROP TRIGGER user_badges_new_notification_id_trigger ON user_badges")
   -> 0.0003s
-- execute("DROP FUNCTION mirror_user_badges_notification_id()")
   -> 0.0002s
-- execute("ALTER TABLE user_badges RENAME COLUMN notification_id TO old_notification_id")
   -> 0.0002s
-- execute("ALTER TABLE user_badges RENAME COLUMN new_notification_id TO notification_id")
   -> 0.0001s
== 20240826121507 SwapBigIntUserBadgesNotificationId: migrated (0.0047s) ======

== 20240827040131 AddNewNotificationIdToChatMentionNotifications: migrating ===
-- execute("ALTER TABLE chat_mention_notifications ADD COLUMN new_notification_id BIGINT NOT NULL DEFAULT(0)")
   -> 0.0004s
-- execute("CREATE FUNCTION mirror_chat_mention_notifications_notification_id()\nRETURNS trigger AS\n$$\nBEGIN\n  NEW.new_notification_id = NEW.notification_id;\n  RETURN NEW;\nEND;\n$$\nLANGUAGE plpgsql\n")
   -> 0.0002s
-- execute("CREATE TRIGGER chat_mention_notifications_new_notification_id_trigger BEFORE INSERT ON chat_mention_notifications\nFOR EACH ROW EXECUTE PROCEDURE mirror_chat_mention_notifications_notification_id()\n")
   -> 0.0002s
== 20240827040131 AddNewNotificationIdToChatMentionNotifications: migrated (0.0012s) 

== 20240827040550 CopyChatMentionNotificationsNotificationIdValues: migrating =
-- execute("SELECT MIN(notification_id), MAX(notification_id) FROM chat_mention_notifications")
   -> 0.0004s
== 20240827040550 CopyChatMentionNotificationsNotificationIdValues: migrated (0.0008s) 

== 20240827040810 CopyChatMentionNotificationsNotificationIdIndexes: migrating 
-- execute("DROP INDEX CONCURRENTLY  IF EXISTS index_chat_mention_notifications_on_new_notification_id")
   -> 0.0002s
-- execute("CREATE UNIQUE INDEX CONCURRENTLY  index_chat_mention_notifications_on_new_notification_id ON chat_mention_notifications (new_notification_id)")
   -> 0.0031s
== 20240827040810 CopyChatMentionNotificationsNotificationIdIndexes: migrated (0.0037s) 

== 20240827040811 SwapBigintChatMentionNotificationsNotificationId: migrating =
-- execute("DROP TRIGGER chat_mention_notifications_new_notification_id_trigger ON chat_mention_notifications")
   -> 0.0003s
-- execute("DROP FUNCTION mirror_chat_mention_notifications_notification_id()")
   -> 0.0002s
-- execute("ALTER TABLE chat_mention_notifications RENAME COLUMN notification_id TO old_notification_id")
   -> 0.0001s
-- execute("ALTER TABLE chat_mention_notifications RENAME COLUMN new_notification_id TO notification_id")
   -> 0.0001s
-- execute("DROP INDEX index_chat_mention_notifications_on_notification_id")
   -> 0.0002s
-- execute("ALTER INDEX index_chat_mention_notifications_on_new_notification_id RENAME TO index_chat_mention_notifications_on_notification_id")
   -> 0.0001s
-- execute("ALTER TABLE chat_mention_notifications ALTER COLUMN old_notification_id DROP NOT NULL")
   -> 0.0002s
-- execute("ALTER TABLE chat_mention_notifications ALTER COLUMN notification_id DROP DEFAULT")
   -> 0.0002s
== 20240827040811 SwapBigintChatMentionNotificationsNotificationId: migrated (0.0052s) 

== 20240827063715 AddNewSeenNotificationIdToUsers: migrating ==================
-- execute("ALTER TABLE users ADD COLUMN new_seen_notification_id BIGINT NOT NULL DEFAULT(0)")
   -> 0.0006s
-- execute("CREATE FUNCTION mirror_users_seen_notification_id() RETURNS trigger AS $$ BEGIN NEW.new_seen_notification_id = NEW.seen_notification_id; RETURN NEW; END; $$ LANGUAGE plpgsql")
   -> 0.0003s
-- execute("CREATE TRIGGER users_seen_notification_id_trigger BEFORE INSERT OR UPDATE ON users FOR EACH ROW EXECUTE PROCEDURE mirror_users_seen_notification_id()")
   -> 0.0002s
== 20240827063715 AddNewSeenNotificationIdToUsers: migrated (0.0016s) =========

== 20240827063908 CopyUsersSeenNotificationIdValues: migrating ================
-- execute("SELECT MIN(id), MAX(id) FROM users")
   -> 0.0005s
-- execute("UPDATE users SET new_seen_notification_id = seen_notification_id WHERE id >= -2 AND id < 9998 AND new_seen_notification_id != seen_notification_id")
   -> 0.0016s
== 20240827063908 CopyUsersSeenNotificationIdValues: migrated (0.0026s) =======

== 20240827064121 SwapSeenNotificationIdWithSeenNotificationIdOnUsers: migrating 
-- execute("DROP TRIGGER users_seen_notification_id_trigger ON users")
   -> 0.0002s
-- execute("DROP FUNCTION mirror_users_seen_notification_id()")
   -> 0.0001s
-- execute("ALTER TABLE users RENAME COLUMN seen_notification_id TO old_seen_notification_id")
   -> 0.0002s
-- execute("ALTER TABLE users RENAME COLUMN new_seen_notification_id TO seen_notification_id")
   -> 0.0001s
-- execute("ALTER TABLE users ALTER COLUMN old_seen_notification_id DROP NOT NULL")
   -> 0.0002s
-- execute("ALTER TABLE users ALTER COLUMN old_seen_notification_id DROP DEFAULT")
   -> 0.0002s
== 20240827064121 SwapSeenNotificationIdWithSeenNotificationIdOnUsers: migrated (0.0047s) 

== 20240828191047 CreateCategoryModerationGroups: migrating ===================
-- create_table(:category_moderation_groups)
   -> 0.0041s
-- add_index(:category_moderation_groups, [:category_id, :group_id], {:unique=>true})
   -> 0.0026s
-- execute("INSERT INTO category_moderation_groups (category_id, group_id, created_at, updated_at)\nSELECT id, reviewable_by_group_id, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP\nFROM categories\nWHERE reviewable_by_group_id IS NOT NULL\n")
   -> 0.0004s
== 20240828191047 CreateCategoryModerationGroups: migrated (0.0076s) ==========

== 20240829083823 EnsureUniqueTagUserNotificationLevel: migrating =============
-- execute("      DELETE FROM tag_users\n      USING tag_users AS dupe\n      WHERE tag_users.id > dupe.id\n      AND tag_users.user_id = dupe.user_id\n      AND tag_users.tag_id = dupe.tag_id;\n")
   -> 0.0006s
-- add_index(:tag_users, [:user_id, :tag_id], {:unique=>true})
   -> 0.0027s
== 20240829083823 EnsureUniqueTagUserNotificationLevel: migrated (0.0037s) ====

== 20240829140226 DropOldNotificationIdColumns: migrating =====================
== 20240829140226 DropOldNotificationIdColumns: migrated (0.0044s) ============

== 20240829140227 DropChatMentionNotificationsOldIdColumn: migrating ==========
== 20240829140227 DropChatMentionNotificationsOldIdColumn: migrated (0.0014s) =

== 20240903024157 RemoveUserPasswordsIndexes: migrating =======================
-- remove_index(:user_passwords, [:user_id, :password_hash], {:unique=>true})
   -> 0.0023s
-- remove_index(:user_passwords, [:user_id, :password_expired_at, :password_hash], {:name=>"idx_user_passwords_on_user_id_and_expired_at_and_hash"})
   -> 0.0020s
== 20240903024157 RemoveUserPasswordsIndexes: migrated (0.0047s) ==============

== 20240903024211 AddTriggerToUsersToSyncUserPasswords: migrating =============
-- execute("DROP TRIGGER IF EXISTS users_password_sync ON users;")
   -> 0.0003s
-- execute("CREATE OR REPLACE FUNCTION mirror_user_password_data() RETURNS TRIGGER AS $$ BEGIN INSERT INTO user_passwords (user_id, password_hash, password_salt, password_algorithm, password_expired_at, created_at, updated_at) VALUES (NEW.id, NEW.password_hash, NEW.salt, NEW.password_algorithm, NULL, now(), now()) ON CONFLICT(user_id) DO UPDATE SET password_hash = EXCLUDED.password_hash, password_salt = EXCLUDED.password_salt, password_algorithm = EXCLUDED.password_algorithm, password_expired_at = EXCLUDED.password_expired_at, updated_at = now() WHERE user_passwords.password_hash <> EXCLUDED.password_hash; RETURN NEW; END; $$ LANGUAGE plpgsql;")
   -> 0.0004s
-- execute("CREATE TRIGGER users_password_sync AFTER INSERT OR UPDATE OF password_hash ON users FOR EACH ROW WHEN (NEW.password_hash IS NOT NULL) EXECUTE PROCEDURE mirror_user_password_data();")
   -> 0.0003s
-- execute("DROP TRIGGER IF EXISTS users_password_sync_on_delete_password ON users;")
   -> 0.0001s
-- execute("CREATE OR REPLACE FUNCTION delete_user_password() RETURNS TRIGGER AS $$ BEGIN DELETE FROM user_passwords WHERE user_id = NEW.id; RETURN NEW; END; $$ LANGUAGE plpgsql;")
   -> 0.0003s
-- execute("CREATE TRIGGER users_password_sync_on_delete_password AFTER UPDATE OF password_hash ON users FOR EACH ROW WHEN (NEW.password_hash IS NULL) EXECUTE PROCEDURE delete_user_password();")
   -> 0.0002s
== 20240903024211 AddTriggerToUsersToSyncUserPasswords: migrated (0.0022s) ====

== 20240903024311 BackfillUserPasswordsFromUsers: migrating ===================
-- execute("INSERT INTO user_passwords (user_id, password_hash, password_salt, password_algorithm, password_expired_at, created_at, updated_at)\nSELECT id, password_hash, salt, password_algorithm, NULL, now(), now()\nFROM users\nWHERE id >= -2 AND id < 49998 AND password_hash IS NOT NULL AND salt IS NOT NULL AND password_algorithm IS NOT NULL\nON CONFLICT (user_id) DO UPDATE SET\n  password_hash = EXCLUDED.password_hash,\n  password_salt = EXCLUDED.password_salt,\n  password_algorithm = EXCLUDED.password_algorithm,\n  password_expired_at = EXCLUDED.password_expired_at,\n  updated_at = now()\nWHERE user_passwords.password_hash <> EXCLUDED.password_hash\n")
   -> 0.0019s
== 20240903024311 BackfillUserPasswordsFromUsers: migrated (0.0031s) ==========

== 20240906142121 MigrateFieldsFromGroupToGroups: migrating ===================
-- execute("      UPDATE discourse_automation_fields\n      SET\n        metadata = '{}'::jsonb\n      WHERE\n        metadata = '{\"value\": [null]}'::jsonb\n        AND component = 'groups'\n        AND name = 'restricted_groups';\n")
   -> 0.0003s
-- execute("      UPDATE discourse_automation_fields\n      SET\n        component = 'groups',\n        name = 'restricted_groups',\n        metadata = CASE\n                    WHEN metadata != '{}'::jsonb THEN jsonb_set(metadata, '{value}', to_jsonb(ARRAY[(metadata->>'value')::int]))\n                    ELSE metadata\n                  END\n      FROM discourse_automation_automations\n      WHERE discourse_automation_fields.automation_id = discourse_automation_automations.id\n        AND discourse_automation_automations.trigger = 'post_created_edited'\n        AND discourse_automation_fields.name = 'restricted_group'\n        AND discourse_automation_fields.component = 'group';\n")
   -> 0.0004s
== 20240906142121 MigrateFieldsFromGroupToGroups: migrated (0.0012s) ==========

== 20240906233304 RemoveLimitsFromFormTemplates: migrating ====================
-- change_column(:form_templates, :name, :string, {:limit=>nil})
   -> 0.0008s
-- change_column(:form_templates, :template, :text, {:limit=>nil})
   -> 0.0003s
== 20240906233304 RemoveLimitsFromFormTemplates: migrated (0.0015s) ===========

== 20240909121255 RebakeUserOnebox: migrating =================================
-- execute("UPDATE posts SET baked_version = 0\nWHERE cooked LIKE '%d-icon-map-marker-alt%'\n")
   -> 0.0019s
== 20240909121255 RebakeUserOnebox: migrated (0.0023s) ========================

== 20240910090759 MakePasswordColumnsFromUsersReadOnly: migrating =============
-- execute("DROP TRIGGER IF EXISTS users_password_sync_on_delete_password ON users;\n")
   -> 0.0002s
-- execute("DROP FUNCTION IF EXISTS delete_user_password;\n")
   -> 0.0002s
-- execute("DROP TRIGGER IF EXISTS users_password_sync ON users;\n")
   -> 0.0002s
-- execute("DROP FUNCTION IF EXISTS mirror_user_password_data;\n")
   -> 0.0001s
== 20240910090759 MakePasswordColumnsFromUsersReadOnly: migrated (0.0108s) ====

== 20240912061702 DropUserSearchSimilarResultsSiteSetting: migrating ==========
-- execute("DELETE FROM site_settings WHERE name = 'user_search_similar_results';\n")
   -> 0.0002s
== 20240912061702 DropUserSearchSimilarResultsSiteSetting: migrated (0.0006s) =

== 20240912061806 DropTrgmIndexesOnUsers: migrating ===========================
-- execute("DROP INDEX CONCURRENTLY IF EXISTS index_users_on_username_lower_trgm;\n")
   -> 0.0044s
-- execute("DROP INDEX CONCURRENTLY IF EXISTS index_users_on_name_trgm;\n")
   -> 0.0041s
== 20240912061806 DropTrgmIndexesOnUsers: migrated (0.0092s) ==================

== 20240912210450 DeleteAnonymousUsersFromDirectoryItems: migrating ===========
== 20240912210450 DeleteAnonymousUsersFromDirectoryItems: migrated (0.0014s) ==

== 20240912212253 IncreaseExternalAvatarUrlLimitTo2000: migrating =============
-- change_column(:single_sign_on_records, :external_avatar_url, :string, {:limit=>2000})
   -> 0.0004s
== 20240912212253 IncreaseExternalAvatarUrlLimitTo2000: migrated (0.0008s) ====

== 20241003122030 AddNotificationLevelToUserChatChannelMemberships: migrating =
-- execute("DROP INDEX CONCURRENTLY IF EXISTS user_chat_channel_memberships_index\n")
   -> 0.0043s
-- add_column(:user_chat_channel_memberships, :notification_level, :integer, {:null=>true})
   -> 0.0005s
-- execute("SELECT MIN(id), MAX(id) FROM user_chat_channel_memberships")
   -> 0.0005s
-- change_column_default(:user_chat_channel_memberships, :notification_level, 1)
   -> 0.0018s
-- change_column_null(:user_chat_channel_memberships, :notification_level, false)
   -> 0.0002s
-- execute("CREATE INDEX CONCURRENTLY user_chat_channel_memberships_index ON user_chat_channel_memberships using btree (user_id, chat_channel_id, notification_level, following)\n")
   -> 0.0036s
== 20241003122030 AddNotificationLevelToUserChatChannelMemberships: migrated (0.0116s) 

== 20241010155139 AlterAutomationIdsToBigint: migrating =======================
-- change_column(:discourse_automation_fields, :automation_id, :bigint)
   -> 0.0061s
-- change_column(:discourse_automation_pending_automations, :automation_id, :bigint)
   -> 0.0033s
-- change_column(:discourse_automation_pending_pms, :automation_id, :bigint)
   -> 0.0062s
== 20241010155139 AlterAutomationIdsToBigint: migrated (0.0162s) ==============

== 20241011033602 AddPostBadgesToThemeModifiers: migrating ====================
-- add_column(:theme_modifier_sets, :serialize_post_user_badges, :string, {:array=>true})
   -> 0.0005s
-- add_column(:theme_modifier_sets, :theme_setting_modifiers, :jsonb)
   -> 0.0003s
== 20241011033602 AddPostBadgesToThemeModifiers: migrated (0.0013s) ===========

== 20241011054348 FixUniqueConstraintOnProblemCheckTrackers: migrating ========
-- remove_index(:problem_check_trackers, [:identifier, :target], {:if_exists=>true})
   -> 0.0031s
-- execute("DELETE FROM problem_check_trackers\nWHERE id IN(\n  SELECT pct1.id\n  FROM problem_check_trackers pct1\n  JOIN problem_check_trackers pct2\n  ON pct1.identifier = pct2.identifier\n  AND pct1.target IS NULL\n  AND pct2.target IS NULL\n  WHERE pct1.id > pct2.id\n)\n")
   -> 0.0005s
-- add_index(:problem_check_trackers, [:identifier, :target], {:unique=>true, :nulls_not_distinct=>true})
   -> 0.0165s
== 20241011054348 FixUniqueConstraintOnProblemCheckTrackers: migrated (0.0208s) 

== 20241011080517 DropPasswordColumnsFromUsers: migrating =====================
== 20241011080517 DropPasswordColumnsFromUsers: migrated (0.0036s) ============

== 20241016174732 RemoveNameRequirementFromAutomations: migrating =============
-- change_column_null(:discourse_automation_automations, :name, true)
   -> 0.0003s
== 20241016174732 RemoveNameRequirementFromAutomations: migrated (0.0007s) ====

== 20241018031851 AddDefaultValueToProblemCheckTrackersTarget: migrating ======
-- change_column_default(:problem_check_trackers, :target, "__NULL__")
   -> 0.0016s
-- execute("UPDATE problem_check_trackers\nSET target='__NULL__'\nWHERE target IS NULL\n")
   -> 0.0003s
== 20241018031851 AddDefaultValueToProblemCheckTrackersTarget: migrated (0.0024s) 

== 20241022022326 RemoveNullsNotDistinctFromProblemCheckTrackers: migrating ===
-- remove_index(:problem_check_trackers, [:identifier, :target], {:if_exists=>true})
   -> 0.0026s
-- add_index(:problem_check_trackers, [:identifier, :target], {:unique=>true})
   -> 0.0031s
== 20241022022326 RemoveNullsNotDistinctFromProblemCheckTrackers: migrated (0.0062s) 

== 20241023041126 ClearDuplicateAdminNotices: migrating =======================
== 20241023041126 ClearDuplicateAdminNotices: migrated (0.0010s) ==============

== 20241024093027 RemoveCategoryExpertsWebHookEventTypes: migrating ===========
-- execute("DELETE FROM web_hook_event_types WHERE (name, id) IN (('category_experts_approved', 1901), ('category_experts_unapproved', 1902))")
   -> 0.0002s
== 20241024093027 RemoveCategoryExpertsWebHookEventTypes: migrated (0.0006s) ==

== 20241024102733 RemoveExperimentalRedesignedAboutPageGroupsSetting: migrating 
-- execute("DELETE FROM site_settings\nWHERE name = 'experimental_redesigned_about_page_groups'\n")
   -> 0.0002s
== 20241024102733 RemoveExperimentalRedesignedAboutPageGroupsSetting: migrated (0.0006s) 

== 20241025045928 AddInvitesLinkToSidebar: migrating ==========================
== 20241025045928 AddInvitesLinkToSidebar: migrated (0.0027s) =================

== 20241028021339 AddSmartListUserPreference: migrating =======================
-- add_column(:user_options, :enable_smart_lists, :boolean, {:default=>true, :null=>false})
   -> 0.0008s
== 20241028021339 AddSmartListUserPreference: migrated (0.0012s) ==============

== 20241029192512 AlterChatIdsToBigint: migrating =============================
-- change_column(:chat_channel_archives, :chat_channel_id, :bigint)
   -> 0.0084s
-- change_column(:chat_channels, :chatable_id, :bigint)
   -> 0.0179s
-- change_column(:chat_drafts, :chat_channel_id, :bigint)
   -> 0.0054s
-- change_column(:chat_mention_notifications, :chat_mention_id, :bigint)
   -> 0.0049s
-- change_column(:chat_mention_notifications, :notification_id, :bigint)
   -> 0.0007s
-- change_column(:chat_mentions, :chat_message_id, :bigint)
   -> 0.0089s
-- change_column(:chat_message_reactions, :chat_message_id, :bigint)
   -> 0.0078s
-- change_column(:chat_message_revisions, :chat_message_id, :bigint)
   -> 0.0097s
-- change_column(:chat_messages, :chat_channel_id, :bigint)
   -> 0.0153s
-- change_column(:chat_messages, :in_reply_to_id, :bigint)
   -> 0.0150s
-- change_column(:chat_webhook_events, :chat_message_id, :bigint)
   -> 0.0053s
-- change_column(:chat_webhook_events, :incoming_chat_webhook_id, :bigint)
   -> 0.0053s
-- change_column(:direct_message_users, :direct_message_channel_id, :bigint)
   -> 0.0052s
-- change_column(:incoming_chat_webhooks, :chat_channel_id, :bigint)
   -> 0.0078s
-- change_column(:user_chat_channel_memberships, :chat_channel_id, :bigint)
   -> 0.0102s
-- change_column(:user_chat_channel_memberships, :last_read_message_id, :bigint)
   -> 0.0080s
-- change_column(:user_chat_channel_memberships, :last_unread_mention_when_emailed_id, :bigint)
   -> 0.0084s
== 20241029192512 AlterChatIdsToBigint: migrated (0.1455s) ====================

== 20241030210727 SplitHideProfileAndPresence: migrating ======================
-- execute("SELECT value, data_type FROM site_settings WHERE name = 'default_hide_profile_and_presence' LIMIT 1")
   -> 0.0003s
-- execute("ALTER TABLE user_options ADD COLUMN hide_profile BOOLEAN DEFAULT FALSE NOT NULL")
   -> 0.0006s
-- execute("ALTER TABLE user_options ADD COLUMN hide_presence BOOLEAN DEFAULT FALSE NOT NULL")
   -> 0.0004s
-- execute("      UPDATE user_options\n      SET hide_profile = hide_profile_and_presence,\n          hide_presence = hide_profile_and_presence\n      WHERE hide_profile_and_presence;\n")
   -> 0.0003s
== 20241030210727 SplitHideProfileAndPresence: migrated (0.0021s) =============

== 20241031050638 AddCustomFieldsToChat: migrating ============================
-- create_table(:chat_thread_custom_fields)
   -> 0.0066s
-- create_table(:chat_message_custom_fields)
   -> 0.0060s
-- create_table(:chat_channel_custom_fields)
   -> 0.0061s
-- add_index(:chat_thread_custom_fields, [:thread_id, :name], {:unique=>true})
   -> 0.0028s
-- add_index(:chat_message_custom_fields, [:message_id, :name], {:unique=>true})
   -> 0.0027s
-- add_index(:chat_channel_custom_fields, [:channel_id, :name], {:unique=>true})
   -> 0.0029s
== 20241031050638 AddCustomFieldsToChat: migrated (0.0281s) ===================

== 20241101141701 AlterBookmarksIdsToBigint: migrating ========================
-- change_column(:bookmarks, :bookmarkable_id, :bigint)
   -> 0.0151s
== 20241101141701 AlterBookmarksIdsToBigint: migrated (0.0157s) ===============

== 20241104053309 AddIconUploadIdToChatChannel: migrating =====================
-- add_column(:chat_channels, :icon_upload_id, :integer)
   -> 0.0005s
== 20241104053309 AddIconUploadIdToChatChannel: migrated (0.0010s) ============

== 20241104132424 RenameFullPageSiteSetting: migrating ========================
-- execute("UPDATE site_settings SET name = 'full_page_login' where name = 'experimental_full_page_login'")
   -> 0.0002s
== 20241104132424 RenameFullPageSiteSetting: migrated (0.0006s) ===============

== 20241105211601 DeleteZeroRankUserVoteCollectionsFromPollVotes: migrating ===
-- execute("DELETE FROM poll_votes\nWHERE (poll_id, user_id) IN (\n    SELECT poll_votes.poll_id, poll_votes.user_id\n    FROM poll_votes\n    JOIN polls ON polls.id = poll_votes.poll_id\n    WHERE polls.type = 3\n    GROUP BY poll_votes.poll_id, poll_votes.user_id\n    HAVING SUM(poll_votes.rank) = 0\n);\n")
   -> 0.0006s
== 20241105211601 DeleteZeroRankUserVoteCollectionsFromPollVotes: migrated (0.0010s) 

== 20241108154026 CreateMovedPosts: migrating =================================
-- create_table(:moved_posts)
   -> 0.0174s
== 20241108154026 CreateMovedPosts: migrated (0.0179s) ========================

== 20241110120303 AddBlocksToChatMessages: migrating ==========================
-- add_column(:chat_messages, :blocks, :jsonb, {:null=>true, :default=>nil})
   -> 0.0007s
== 20241110120303 AddBlocksToChatMessages: migrated (0.0011s) =================

== 20241111022618 CreateChatMessageInteractions: migrating ====================
-- create_table(:chat_message_interactions, {:id=>:bigint})
   -> 0.0059s
-- add_index(:chat_message_interactions, :user_id)
   -> 0.0022s
-- add_index(:chat_message_interactions, :chat_message_id)
   -> 0.0023s
== 20241111022618 CreateChatMessageInteractions: migrated (0.0110s) ===========

== 20241112124552 CreateUserApiKeyClientScopes: migrating =====================
-- create_table(:user_api_key_client_scopes)
   -> 0.0035s
== 20241112124552 CreateUserApiKeyClientScopes: migrated (0.0041s) ============

== 20241112145744 AnonymizeNormalizedEmailColumn: migrating ===================
-- execute("UPDATE user_emails\nSET normalized_email = email\nWHERE SPLIT_PART(email, '@', 2) = 'anonymized.invalid'\n")
   -> 0.0004s
== 20241112145744 AnonymizeNormalizedEmailColumn: migrated (0.0007s) ==========

== 20241120182858 AddIndexToChatMessagesOnChatChannelId: migrating ============
-- execute("DROP INDEX CONCURRENTLY IF EXISTS index_chat_messages_on_chat_channel_id_and_id\n")
   -> 0.0002s
-- execute("CREATE INDEX CONCURRENTLY index_chat_messages_on_chat_channel_id_and_id\nON chat_messages (chat_channel_id,id)\nWHERE deleted_at IS NOT NULL\n")
   -> 0.0029s
== 20241120182858 AddIndexToChatMessagesOnChatChannelId: migrated (0.0036s) ===

== 20241121000131 AddPostHeaderToBadge: migrating =============================
-- add_column(:badges, :show_in_post_header, :boolean, {:default=>false, :null=>false})
   -> 0.0008s
== 20241121000131 AddPostHeaderToBadge: migrated (0.0012s) ====================

== 20241127034553 AddPotentiallyIllegalToReviewables: migrating ===============
-- add_column(:reviewables, :potentially_illegal, :boolean)
   -> 0.0003s
-- change_column_default(:reviewables, :potentially_illegal, false)
   -> 0.0020s
== 20241127034553 AddPotentiallyIllegalToReviewables: migrated (0.0029s) ======

== 20241127072350 RemapFa5IconNamesToFa6: migrating ===========================
== 20241127072350 RemapFa5IconNamesToFa6: migrated (0.0004s) ==================

== 20241204085540 RemapToFa6IconNames: migrating ==============================
-- execute("SELECT value FROM site_settings WHERE name = 'svg_icon_subset'")
   -> 0.0002s
-- execute("WITH remaps AS (\n  SELECT from_icon, to_icon FROM (VALUES ('adjust', 'circle-half-stroke'), ('air-freshener', 'spray-can-sparkles'), ('alien-monster', 'alien-8bit'), ('allergies', 'hand-dots'), ('ambulance', 'truck-medical'), ('american-sign-language-interpreting', 'hands-asl-interpreting'), ('analytics', 'chart-mixed'), ('angle-double-down', 'angles-down'), ('angle-double-left', 'angles-left'), ('angle-double-right', 'angles-right'), ('angle-double-up', 'angles-up'), ('angry', 'face-angry'), ('apple-alt', 'apple-whole'), ('apple-crate', 'crate-apple'), ('archive', 'box-archive'), ('arrow-alt-circle-down', 'circle-down'), ('arrow-alt-circle-left', 'circle-left'), ('arrow-alt-circle-right', 'circle-right'), ('arrow-alt-circle-up', 'circle-up'), ('arrow-alt-down', 'down'), ('arrow-alt-from-bottom', 'up-from-line'), ('arrow-alt-from-left', 'right-from-line'), ('arrow-alt-from-right', 'left-from-line'), ('arrow-alt-from-top', 'down-from-line'), ('arrow-alt-left', 'left'), ('arrow-alt-right', 'right'), ('arrow-alt-square-down', 'square-down'), ('arrow-alt-square-left', 'square-left'), ('arrow-alt-square-right', 'square-right'), ('arrow-alt-square-up', 'square-up'), ('arrow-alt-to-bottom', 'down-to-line'), ('arrow-alt-to-left', 'left-to-line'), ('arrow-alt-to-right', 'right-to-line'), ('arrow-alt-to-top', 'up-to-line'), ('arrow-alt-up', 'up'), ('arrow-circle-down', 'circle-arrow-down'), ('arrow-circle-left', 'circle-arrow-left'), ('arrow-circle-right', 'circle-arrow-right'), ('arrow-circle-up', 'circle-arrow-up'), ('arrow-from-bottom', 'arrow-up-from-line'), ('arrow-from-left', 'arrow-right-from-line'), ('arrow-from-right', 'arrow-left-from-line'), ('arrow-from-top', 'arrow-down-from-line'), ('arrow-square-down', 'square-arrow-down'), ('arrow-square-left', 'square-arrow-left'), ('arrow-square-right', 'square-arrow-right'), ('arrow-square-up', 'square-arrow-up'), ('arrow-to-bottom', 'arrow-down-to-line'), ('arrow-to-left', 'arrow-left-to-line'), ('arrow-to-right', 'arrow-right-to-line'), ('arrow-to-top', 'arrow-up-to-line'), ('arrows', 'arrows-up-down-left-right'), ('arrows-alt', 'up-down-left-right'), ('arrows-alt-h', 'left-right'), ('arrows-alt-v', 'up-down'), ('arrows-h', 'arrows-left-right'), ('arrows-v', 'arrows-up-down'), ('assistive-listening-systems', 'ear-listen'), ('atlas', 'book-atlas'), ('atom-alt', 'atom-simple'), ('backspace', 'delete-left'), ('balance-scale', 'scale-balanced'), ('balance-scale-left', 'scale-unbalanced'), ('balance-scale-right', 'scale-unbalanced-flip'), ('band-aid', 'bandage'), ('barcode-alt', 'rectangle-barcode'), ('baseball-ball', 'baseball'), ('basketball-ball', 'basketball'), ('bed-alt', 'bed-front'), ('beer', 'beer-mug-empty'), ('betamax', 'cassette-betamax'), ('bible', 'book-bible'), ('biking', 'person-biking'), ('biking-mountain', 'person-biking-mountain'), ('birthday-cake', 'cake-candles'), ('blind', 'person-walking-with-cane'), ('book-alt', 'book-blank'), ('book-dead', 'book-skull'), ('book-reader', 'book-open-reader'), ('book-spells', 'book-sparkles'), ('border-style', 'border-top-left'), ('border-style-alt', 'border-bottom-right'), ('box-alt', 'box-taped'), ('box-fragile', 'square-fragile'), ('box-full', 'box-open-full'), ('box-up', 'square-this-way-up'), ('box-usd', 'box-dollar'), ('boxes', 'boxes-stacked'), ('boxes-alt', 'boxes-stacked'), ('brackets', 'brackets-square'), ('broadcast-tower', 'tower-broadcast'), ('burn', 'fire-flame-simple'), ('bus-alt', 'bus-simple'), ('calculator-alt', 'calculator-simple'), ('calendar-alt', 'calendar-days'), ('calendar-edit', 'calendar-pen'), ('calendar-times', 'calendar-xmark'), ('camera-alt', 'camera'), ('camera-home', 'camera-security'), ('car-alt', 'car-rear'), ('car-crash', 'car-burst'), ('car-mechanic', 'car-wrench'), ('caravan-alt', 'caravan-simple'), ('caret-circle-down', 'circle-caret-down'), ('caret-circle-left', 'circle-caret-left'), ('caret-circle-right', 'circle-caret-right'), ('caret-circle-up', 'circle-caret-up'), ('caret-square-down', 'square-caret-down'), ('caret-square-left', 'square-caret-left'), ('caret-square-right', 'square-caret-right'), ('caret-square-up', 'square-caret-up'), ('cctv', 'camera-cctv'), ('chalkboard-teacher', 'chalkboard-user'), ('chart-pie-alt', 'chart-pie-simple'), ('check-circle', 'circle-check'), ('check-square', 'square-check'), ('cheeseburger', 'burger-cheese'), ('chess-bishop-alt', 'chess-bishop-piece'), ('chess-clock-alt', 'chess-clock-flip'), ('chess-king-alt', 'chess-king-piece'), ('chess-knight-alt', 'chess-knight-piece'), ('chess-pawn-alt', 'chess-pawn-piece'), ('chess-queen-alt', 'chess-queen-piece'), ('chess-rook-alt', 'chess-rook-piece'), ('chevron-circle-down', 'circle-chevron-down'), ('chevron-circle-left', 'circle-chevron-left'), ('chevron-circle-right', 'circle-chevron-right'), ('chevron-circle-up', 'circle-chevron-up'), ('chevron-double-down', 'chevrons-down'), ('chevron-double-left', 'chevrons-left'), ('chevron-double-right', 'chevrons-right'), ('chevron-double-up', 'chevrons-up'), ('chevron-square-down', 'square-chevron-down'), ('chevron-square-left', 'square-chevron-left'), ('chevron-square-right', 'square-chevron-right'), ('chevron-square-up', 'square-chevron-up'), ('clinic-medical', 'house-chimney-medical'), ('cloud-download', 'cloud-arrow-down'), ('cloud-download-alt', 'cloud-arrow-down'), ('cloud-upload', 'cloud-arrow-up'), ('cloud-upload-alt', 'cloud-arrow-up'), ('cocktail', 'martini-glass-citrus'), ('coffee', 'mug-saucer'), ('coffee-togo', 'cup-togo'), ('cog', 'gear'), ('cogs', 'gears'), ('columns', 'table-columns'), ('comment-alt', 'message'), ('comment-alt-check', 'message-check'), ('comment-alt-dollar', 'message-dollar'), ('comment-alt-dots', 'message-dots'), ('comment-alt-edit', 'message-pen'), ('comment-alt-exclamation', 'message-exclamation'), ('comment-alt-lines', 'message-lines'), ('comment-alt-medical', 'message-medical'), ('comment-alt-minus', 'message-minus'), ('comment-alt-music', 'message-music'), ('comment-alt-plus', 'message-plus'), ('comment-alt-slash', 'message-slash'), ('comment-alt-smile', 'message-smile'), ('comment-alt-times', 'message-xmark'), ('comment-edit', 'comment-pen'), ('comment-times', 'comment-xmark'), ('comments-alt', 'messages'), ('comments-alt-dollar', 'messages-dollar'), ('compress-alt', 'down-left-and-up-right-to-center'), ('compress-arrows-alt', 'minimize'), ('concierge-bell', 'bell-concierge'), ('construction', 'triangle-person-digging'), ('conveyor-belt-alt', 'conveyor-belt-boxes'), ('cowbell-more', 'cowbell-circle-plus'), ('cricket', 'cricket-bat-ball'), ('crop-alt', 'crop-simple'), ('curling', 'curling-stone'), ('cut', 'scissors'), ('deaf', 'ear-deaf'), ('debug', 'ban-bug'), ('desktop-alt', 'desktop'), ('dewpoint', 'droplet-degree'), ('diagnoses', 'person-dots-from-line'), ('digging', 'person-digging'), ('digital-tachograph', 'tachograph-digital'), ('directions', 'diamond-turn-right'), ('dizzy', 'face-dizzy'), ('dolly-flatbed', 'cart-flatbed'), ('dolly-flatbed-alt', 'cart-flatbed-boxes'), ('dolly-flatbed-empty', 'cart-flatbed-empty'), ('donate', 'circle-dollar-to-slot'), ('dot-circle', 'circle-dot'), ('drafting-compass', 'compass-drafting'), ('drone-alt', 'drone-front'), ('dryer-alt', 'dryer-heat'), ('eclipse-alt', 'moon-over-sun'), ('edit', 'pen-to-square'), ('ellipsis-h', 'ellipsis'), ('ellipsis-h-alt', 'ellipsis-stroke'), ('ellipsis-v', 'ellipsis-vertical'), ('ellipsis-v-alt', 'ellipsis-stroke-vertical'), ('envelope-square', 'square-envelope'), ('exchange', 'arrow-right-arrow-left'), ('exchange-alt', 'right-left'), ('exclamation-circle', 'circle-exclamation'), ('exclamation-square', 'square-exclamation'), ('exclamation-triangle', 'triangle-exclamation'), ('expand-alt', 'up-right-and-down-left-from-center'), ('expand-arrows', 'arrows-maximize'), ('expand-arrows-alt', 'maximize'), ('external-link', 'arrow-up-right-from-square'), ('external-link-alt', 'up-right-from-square'), ('external-link-square', 'square-arrow-up-right'), ('external-link-square-alt', 'square-up-right'), ('eyedropper', 'eye-dropper'), ('fast-backward', 'backward-fast'), ('fast-forward', 'forward-fast'), ('feather-alt', 'feather-pointed'), ('female', 'person-dress'), ('field-hockey', 'field-hockey-stick-ball'), ('fighter-jet', 'jet-fighter'), ('file-alt', 'file-lines'), ('file-archive', 'file-zipper'), ('file-chart-line', 'file-chart-column'), ('file-download', 'file-arrow-down'), ('file-edit', 'file-pen'), ('file-medical-alt', 'file-waveform'), ('file-search', 'file-magnifying-glass'), ('file-times', 'file-xmark'), ('file-upload', 'file-arrow-up'), ('film-alt', 'film-simple'), ('fire-alt', 'fire-flame-curved'), ('first-aid', 'kit-medical'), ('fist-raised', 'hand-fist'), ('flag-alt', 'flag-swallowtail'), ('flame', 'fire-flame'), ('flask-poison', 'flask-round-poison'), ('flask-potion', 'flask-round-potion'), ('flushed', 'face-flushed'), ('fog', 'cloud-fog'), ('folder-download', 'folder-arrow-down'), ('folder-times', 'folder-xmark'), ('folder-upload', 'folder-arrow-up'), ('font-awesome-alt', 'square-font-awesome-stroke'), ('font-awesome-flag', 'font-awesome'), ('font-awesome-logo-full', 'font-awesome'), ('football-ball', 'football'), ('fragile', 'wine-glass-crack'), ('frosty-head', 'snowman-head'), ('frown', 'face-frown'), ('frown-open', 'face-frown-open'), ('funnel-dollar', 'filter-circle-dollar'), ('game-board-alt', 'game-board-simple'), ('gamepad-alt', 'gamepad-modern'), ('glass-champagne', 'champagne-glass'), ('glass-cheers', 'champagne-glasses'), ('glass-martini', 'martini-glass-empty'), ('glass-martini-alt', 'martini-glass'), ('glass-whiskey', 'whiskey-glass'), ('glass-whiskey-rocks', 'whiskey-glass-ice'), ('glasses-alt', 'glasses-round'), ('globe-africa', 'earth-africa'), ('globe-americas', 'earth-americas'), ('globe-asia', 'earth-asia'), ('globe-europe', 'earth-europe'), ('golf-ball', 'golf-ball-tee'), ('grimace', 'face-grimace'), ('grin', 'face-grin'), ('grin-alt', 'face-grin-wide'), ('grin-beam', 'face-grin-beam'), ('grin-beam-sweat', 'face-grin-beam-sweat'), ('grin-hearts', 'face-grin-hearts'), ('grin-squint', 'face-grin-squint'), ('grin-squint-tears', 'face-grin-squint-tears'), ('grin-stars', 'face-grin-stars'), ('grin-tears', 'face-grin-tears'), ('grin-tongue', 'face-grin-tongue'), ('grin-tongue-squint', 'face-grin-tongue-squint'), ('grin-tongue-wink', 'face-grin-tongue-wink'), ('grin-wink', 'face-grin-wink'), ('grip-horizontal', 'grip'), ('h-square', 'square-h'), ('hamburger', 'burger'), ('hand-holding-usd', 'hand-holding-dollar'), ('hand-holding-water', 'hand-holding-droplet'), ('hand-paper', 'hand'), ('hand-receiving', 'hands-holding-diamond'), ('hand-rock', 'hand-back-fist'), ('hands-heart', 'hands-holding-heart'), ('hands-helping', 'handshake-angle'), ('hands-usd', 'hands-holding-dollar'), ('hands-wash', 'hands-bubbles'), ('handshake-alt', 'handshake-simple'), ('handshake-alt-slash', 'handshake-simple-slash'), ('hard-hat', 'helmet-safety'), ('hdd', 'hard-drive'), ('head-vr', 'head-side-goggles'), ('headphones-alt', 'headphones-simple'), ('heart-broken', 'heart-crack'), ('heart-circle', 'circle-heart'), ('heart-rate', 'wave-pulse'), ('heart-square', 'square-heart'), ('heartbeat', 'heart-pulse'), ('hiking', 'person-hiking'), ('history', 'clock-rotate-left'), ('home', 'house'), ('home-alt', 'house'), ('home-heart', 'house-heart'), ('home-lg', 'house-chimney'), ('home-lg-alt', 'house'), ('hospital-alt', 'hospital'), ('hospital-symbol', 'circle-h'), ('hot-tub', 'hot-tub-person'), ('hourglass-half', 'hourglass'), ('house-damage', 'house-chimney-crack'), ('house-leave', 'house-person-leave'), ('house-return', 'house-person-return'), ('hryvnia', 'hryvnia-sign'), ('humidity', 'droplet-percent'), ('icons-alt', 'symbols'), ('id-card-alt', 'id-card-clip'), ('industry-alt', 'industry-windows'), ('info-circle', 'circle-info'), ('info-square', 'square-info'), ('innosoft', '42-group'), ('inventory', 'shelves'), ('journal-whills', 'book-journal-whills'), ('kiss', 'face-kiss'), ('kiss-beam', 'face-kiss-beam'), ('kiss-wink-heart', 'face-kiss-wink-heart'), ('landmark-alt', 'landmark-dome'), ('laptop-house', 'house-laptop'), ('laugh', 'face-laugh'), ('laugh-beam', 'face-laugh-beam'), ('laugh-squint', 'face-laugh-squint'), ('laugh-wink', 'face-laugh-wink'), ('level-down', 'arrow-turn-down'), ('level-down-alt', 'turn-down'), ('level-up', 'arrow-turn-up'), ('level-up-alt', 'turn-up'), ('list-alt', 'rectangle-list'), ('location', 'location-crosshairs'), ('location-circle', 'circle-location-arrow'), ('location-slash', 'location-crosshairs-slash'), ('lock-alt', 'lock-keyhole'), ('lock-open-alt', 'lock-keyhole-open'), ('long-arrow-alt-down', 'down-long'), ('long-arrow-alt-left', 'left-long'), ('long-arrow-alt-right', 'right-long'), ('long-arrow-alt-up', 'up-long'), ('long-arrow-down', 'arrow-down-long'), ('long-arrow-left', 'arrow-left-long'), ('long-arrow-right', 'arrow-right-long'), ('long-arrow-up', 'arrow-up-long'), ('low-vision', 'eye-low-vision'), ('luchador', 'luchador-mask'), ('luggage-cart', 'cart-flatbed-suitcase'), ('magic', 'wand-magic'), ('mail-bulk', 'envelopes-bulk'), ('male', 'person'), ('map-marked', 'map-location'), ('map-marked-alt', 'map-location-dot'), ('map-marker', 'location-pin'), ('map-marker-alt', 'location-dot'), ('map-marker-alt-slash', 'location-dot-slash'), ('map-marker-check', 'location-check'), ('map-marker-edit', 'location-pen'), ('map-marker-exclamation', 'location-exclamation'), ('map-marker-minus', 'location-minus'), ('map-marker-plus', 'location-plus'), ('map-marker-question', 'location-question'), ('map-marker-slash', 'location-pin-slash'), ('map-marker-smile', 'location-smile'), ('map-marker-times', 'location-xmark'), ('map-signs', 'signs-post'), ('mars-stroke-h', 'mars-stroke-right'), ('mars-stroke-v', 'mars-stroke-up'), ('medium-m', 'medium'), ('medkit', 'suitcase-medical'), ('meh', 'face-meh'), ('meh-blank', 'face-meh-blank'), ('meh-rolling-eyes', 'face-rolling-eyes'), ('microphone-alt', 'microphone-lines'), ('microphone-alt-slash', 'microphone-lines-slash'), ('mind-share', 'brain-arrow-curved-right'), ('minus-circle', 'circle-minus'), ('minus-hexagon', 'hexagon-minus'), ('minus-octagon', 'octagon-minus'), ('minus-square', 'square-minus'), ('mobile-alt', 'mobile-screen-button'), ('mobile-android', 'mobile'), ('mobile-android-alt', 'mobile-screen'), ('money-bill-alt', 'money-bill-1'), ('money-bill-wave-alt', 'money-bill-1-wave'), ('money-check-alt', 'money-check-dollar'), ('money-check-edit', 'money-check-pen'), ('money-check-edit-alt', 'money-check-dollar-pen'), ('monitor-heart-rate', 'monitor-waveform'), ('mouse', 'computer-mouse'), ('mouse-alt', 'computer-mouse-scrollwheel'), ('mouse-pointer', 'arrow-pointer'), ('music-alt', 'music-note'), ('music-alt-slash', 'music-note-slash'), ('oil-temp', 'oil-temperature'), ('page-break', 'file-dashed-line'), ('paint-brush', 'paintbrush'), ('paint-brush-alt', 'paintbrush-fine'), ('paint-brush-fine', 'paintbrush-fine'), ('pallet-alt', 'pallet-boxes'), ('paragraph-rtl', 'paragraph-left'), ('parking', 'square-parking'), ('parking-circle', 'circle-parking'), ('parking-circle-slash', 'ban-parking'), ('parking-slash', 'square-parking-slash'), ('pastafarianism', 'spaghetti-monster-flying'), ('pause-circle', 'circle-pause'), ('paw-alt', 'paw-simple'), ('pen-alt', 'pen-clip'), ('pen-square', 'square-pen'), ('pencil-alt', 'pencil'), ('pencil-paintbrush', 'pen-paintbrush'), ('pencil-ruler', 'pen-ruler'), ('pennant', 'flag-pennant'), ('people-arrows', 'people-arrows-left-right'), ('people-carry', 'people-carry-box'), ('percentage', 'percent'), ('person-carry', 'person-carry-box'), ('phone-alt', 'phone-flip'), ('phone-laptop', 'laptop-mobile'), ('phone-square', 'square-phone'), ('phone-square-alt', 'square-phone-flip'), ('photo-video', 'photo-film'), ('plane-alt', 'plane-engines'), ('play-circle', 'circle-play'), ('plus-circle', 'circle-plus'), ('plus-hexagon', 'hexagon-plus'), ('plus-octagon', 'octagon-plus'), ('plus-square', 'square-plus'), ('poll', 'square-poll-vertical'), ('poll-h', 'square-poll-horizontal'), ('portal-enter', 'person-to-portal'), ('portal-exit', 'person-from-portal'), ('portrait', 'image-portrait'), ('pound-sign', 'sterling-sign'), ('pray', 'person-praying'), ('praying-hands', 'hands-praying'), ('prescription-bottle-alt', 'prescription-bottle-medical'), ('presentation', 'presentation-screen'), ('print-search', 'print-magnifying-glass'), ('procedures', 'bed-pulse'), ('project-diagram', 'diagram-project'), ('question-circle', 'circle-question'), ('question-square', 'square-question'), ('quran', 'book-quran'), ('rabbit-fast', 'rabbit-running'), ('radiation-alt', 'circle-radiation'), ('radio-alt', 'radio-tuner'), ('random', 'shuffle'), ('rectangle-landscape', 'rectangle'), ('rectangle-portrait', 'rectangle-vertical'), ('redo', 'arrow-rotate-right'), ('redo-alt', 'rotate-right'), ('remove-format', 'text-slash'), ('repeat-1-alt', 'arrows-repeat-1'), ('repeat-alt', 'arrows-repeat'), ('retweet-alt', 'arrows-retweet'), ('rss-square', 'square-rss'), ('running', 'person-running'), ('sad-cry', 'face-sad-cry'), ('sad-tear', 'face-sad-tear'), ('save', 'floppy-disk'), ('sax-hot', 'saxophone-fire'), ('scalpel-path', 'scalpel-line-dashed'), ('scanner-image', 'scanner'), ('search', 'magnifying-glass'), ('search-dollar', 'magnifying-glass-dollar'), ('search-location', 'magnifying-glass-location'), ('search-minus', 'magnifying-glass-minus'), ('search-plus', 'magnifying-glass-plus'), ('sensor-alert', 'sensor-triangle-exclamation'), ('sensor-smoke', 'sensor-cloud'), ('share-alt', 'share-nodes'), ('share-alt-square', 'square-share-nodes'), ('share-square', 'share-from-square'), ('shield-alt', 'shield-halved'), ('shipping-fast', 'truck-fast'), ('shipping-timed', 'truck-clock'), ('shopping-bag', 'bag-shopping'), ('shopping-basket', 'basket-shopping'), ('shopping-cart', 'cart-shopping'), ('shuttle-van', 'van-shuttle'), ('sign', 'sign-hanging'), ('sign-in', 'arrow-right-to-bracket'), ('sign-in-alt', 'right-to-bracket'), ('sign-language', 'hands'), ('sign-out', 'arrow-right-from-bracket'), ('sign-out-alt', 'right-from-bracket'), ('signal-1', 'signal-weak'), ('signal-2', 'signal-fair'), ('signal-3', 'signal-good'), ('signal-4', 'signal-strong'), ('signal-alt', 'signal-bars'), ('signal-alt-1', 'signal-bars-weak'), ('signal-alt-2', 'signal-bars-fair'), ('signal-alt-3', 'signal-bars-good'), ('signal-alt-slash', 'signal-bars-slash'), ('skating', 'person-skating'), ('ski-jump', 'person-ski-jumping'), ('ski-lift', 'person-ski-lift'), ('skiing', 'person-skiing'), ('skiing-nordic', 'person-skiing-nordic'), ('slack-hash', 'slack'), ('sledding', 'person-sledding'), ('sliders-h', 'sliders'), ('sliders-h-square', 'square-sliders'), ('sliders-v', 'sliders-up'), ('sliders-v-square', 'square-sliders-vertical'), ('smile', 'face-smile'), ('smile-beam', 'face-smile-beam'), ('smile-plus', 'face-smile-plus'), ('smile-wink', 'face-smile-wink'), ('smoking-ban', 'ban-smoking'), ('sms', 'comment-sms'), ('snapchat-ghost', 'snapchat'), ('snowboarding', 'person-snowboarding'), ('snowmobile', 'person-snowmobiling'), ('sort-alpha-down', 'arrow-down-a-z'), ('sort-alpha-down-alt', 'arrow-down-z-a'), ('sort-alpha-up', 'arrow-up-a-z'), ('sort-alpha-up-alt', 'arrow-up-z-a'), ('sort-alt', 'arrow-down-arrow-up'), ('sort-amount-down', 'arrow-down-wide-short'), ('sort-amount-down-alt', 'arrow-down-short-wide'), ('sort-amount-up', 'arrow-up-wide-short'), ('sort-amount-up-alt', 'arrow-up-short-wide'), ('sort-circle', 'circle-sort'), ('sort-circle-down', 'circle-sort-down'), ('sort-circle-up', 'circle-sort-up'), ('sort-numeric-down', 'arrow-down-1-9'), ('sort-numeric-down-alt', 'arrow-down-9-1'), ('sort-numeric-up', 'arrow-up-1-9'), ('sort-numeric-up-alt', 'arrow-up-9-1'), ('sort-shapes-down', 'arrow-down-triangle-square'), ('sort-shapes-down-alt', 'arrow-down-square-triangle'), ('sort-shapes-up', 'arrow-up-triangle-square'), ('sort-shapes-up-alt', 'arrow-up-square-triangle'), ('sort-size-down', 'arrow-down-big-small'), ('sort-size-down-alt', 'arrow-down-small-big'), ('sort-size-up', 'arrow-up-big-small'), ('sort-size-up-alt', 'arrow-up-small-big'), ('soup', 'bowl-hot'), ('space-shuttle', 'shuttle-space'), ('space-station-moon-alt', 'space-station-moon-construction'), ('square-root-alt', 'square-root-variable'), ('star-half-alt', 'star-half-stroke'), ('starfighter-alt', 'starfighter-twin-ion-engine'), ('step-backward', 'backward-step'), ('step-forward', 'forward-step'), ('sticky-note', 'note-sticky'), ('stop-circle', 'circle-stop'), ('store-alt', 'shop'), ('store-alt-slash', 'shop-slash'), ('stream', 'bars-staggered'), ('subway', 'train-subway'), ('surprise', 'face-surprise'), ('swimmer', 'person-swimming'), ('swimming-pool', 'water-ladder'), ('sync', 'arrows-rotate'), ('sync-alt', 'rotate'), ('table-tennis', 'table-tennis-paddle-ball'), ('tablet-alt', 'tablet-screen-button'), ('tablet-android', 'tablet'), ('tablet-android-alt', 'tablet-screen'), ('tachometer', 'gauge-simple'), ('tachometer-alt', 'gauge'), ('tachometer-alt-average', 'gauge-med'), ('tachometer-alt-fast', 'gauge'), ('tachometer-alt-fastest', 'gauge-max'), ('tachometer-alt-slow', 'gauge-low'), ('tachometer-alt-slowest', 'gauge-min'), ('tachometer-average', 'gauge-simple-med'), ('tachometer-fast', 'gauge-simple'), ('tachometer-fastest', 'gauge-simple-max'), ('tachometer-slow', 'gauge-simple-low'), ('tachometer-slowest', 'gauge-simple-min'), ('tanakh', 'book-tanakh'), ('tasks', 'list-check'), ('tasks-alt', 'bars-progress'), ('telegram-plane', 'telegram'), ('temperature-down', 'temperature-arrow-down'), ('temperature-frigid', 'temperature-snow'), ('temperature-hot', 'temperature-sun'), ('temperature-up', 'temperature-arrow-up'), ('tenge', 'tenge-sign'), ('th', 'table-cells'), ('th-large', 'table-cells-large'), ('th-list', 'table-list'), ('theater-masks', 'masks-theater'), ('thermometer-empty', 'temperature-empty'), ('thermometer-full', 'temperature-full'), ('thermometer-half', 'temperature-half'), ('thermometer-quarter', 'temperature-quarter'), ('thermometer-three-quarters', 'temperature-three-quarters'), ('thumb-tack', 'thumbtack'), ('thunderstorm', 'cloud-bolt'), ('thunderstorm-moon', 'cloud-bolt-moon'), ('thunderstorm-sun', 'cloud-bolt-sun'), ('ticket-alt', 'ticket-simple'), ('times', 'xmark'), ('times-circle', 'circle-xmark'), ('times-hexagon', 'hexagon-xmark'), ('times-octagon', 'octagon-xmark'), ('times-square', 'square-xmark'), ('tint', 'droplet'), ('tint-slash', 'droplet-slash'), ('tired', 'face-tired'), ('toilet-paper-alt', 'toilet-paper-blank'), ('tombstone-alt', 'tombstone-blank'), ('tools', 'screwdriver-wrench'), ('torah', 'scroll-torah'), ('tram', 'train-tram'), ('transgender-alt', 'transgender'), ('trash-alt', 'trash-can'), ('trash-restore', 'trash-arrow-up'), ('trash-restore-alt', 'trash-can-arrow-up'), ('trash-undo-alt', 'trash-can-undo'), ('tree-alt', 'tree-deciduous'), ('triangle-music', 'triangle-instrument'), ('trophy-alt', 'trophy-star'), ('truck-couch', 'truck-ramp-couch'), ('truck-loading', 'truck-ramp-box'), ('tshirt', 'shirt'), ('tv-alt', 'tv'), ('undo', 'arrow-rotate-left'), ('undo-alt', 'rotate-left'), ('university', 'building-columns'), ('unlink', 'link-slash'), ('unlock-alt', 'unlock-keyhole'), ('usd-circle', 'circle-dollar'), ('usd-square', 'square-dollar'), ('user-alt', 'user-large'), ('user-alt-slash', 'user-large-slash'), ('user-chart', 'chart-user'), ('user-circle', 'circle-user'), ('user-cog', 'user-gear'), ('user-edit', 'user-pen'), ('user-friends', 'user-group'), ('user-hard-hat', 'user-helmet-safety'), ('user-md', 'user-doctor'), ('user-md-chat', 'user-doctor-message'), ('user-times', 'user-xmark'), ('users-class', 'screen-users'), ('users-cog', 'users-gear'), ('users-crown', 'user-group-crown'), ('utensil-fork', 'fork'), ('utensil-knife', 'knife'), ('utensil-spoon', 'spoon'), ('utensils-alt', 'fork-knife'), ('vhs', 'cassette-vhs'), ('volleyball-ball', 'volleyball'), ('volume-down', 'volume-low'), ('volume-mute', 'volume-xmark'), ('volume-up', 'volume-high'), ('vote-nay', 'xmark-to-slot'), ('vote-yea', 'check-to-slot'), ('walking', 'person-walking'), ('warehouse-alt', 'warehouse-full'), ('washer', 'washing-machine'), ('water-lower', 'water-arrow-down'), ('water-rise', 'water-arrow-up'), ('waveform-path', 'waveform-lines'), ('webcam', 'camera-web'), ('webcam-slash', 'camera-web-slash'), ('weight', 'weight-scale'), ('wifi-1', 'wifi-weak'), ('wifi-2', 'wifi-fair'), ('window-alt', 'window-flip'), ('window-close', 'rectangle-xmark'), ('wine-glass-alt', 'wine-glass-empty')) AS mapping(from_icon, to_icon)\n)\nUPDATE groups\nSET flair_icon =\n  CASE\n    WHEN flair_icon LIKE 'fab-%' THEN CONCAT('fab-', remaps.to_icon)\n    WHEN flair_icon LIKE 'far-%' THEN CONCAT('far-', remaps.to_icon)\n    WHEN flair_icon LIKE 'fab fa-%' THEN CONCAT('fab-', remaps.to_icon)\n    WHEN flair_icon LIKE 'far fa-%' THEN CONCAT('far-', remaps.to_icon)\n    ELSE remaps.to_icon\n  END\nFROM remaps\nWHERE flair_icon = remaps.from_icon\n  OR flair_icon = CONCAT('fa-', remaps.from_icon)\n  OR flair_icon = CONCAT('far-', remaps.from_icon)\n  OR flair_icon = CONCAT('fab-', remaps.from_icon)\n  OR flair_icon = CONCAT('far fa-', remaps.from_icon)\n  OR flair_icon = CONCAT('fab fa-', remaps.from_icon)\n  OR flair_icon = CONCAT('fas fa-', remaps.from_icon);\n")
   -> 0.0064s
-- execute("UPDATE groups\nSET flair_icon =\nCASE\n  WHEN flair_icon LIKE 'fas fa-%' THEN SUBSTRING(flair_icon FROM 8)\n  WHEN flair_icon LIKE 'far fa-%' THEN CONCAT('far-', SUBSTRING(flair_icon FROM 8))\n  WHEN flair_icon LIKE 'fab fa-%' THEN CONCAT('fab-', SUBSTRING(flair_icon FROM 8))\n  WHEN flair_icon LIKE 'fa-%' THEN SUBSTRING(flair_icon FROM 4)\n  ELSE flair_icon\nEND\nWHERE flair_icon LIKE 'fa-%'\n  OR flair_icon LIKE 'far fa-%'\n  OR flair_icon LIKE 'fab fa-%'\n  OR flair_icon LIKE 'fas fa-%';\n")
   -> 0.0004s
-- execute("WITH remaps AS (\n  SELECT from_icon, to_icon FROM (VALUES ('adjust', 'circle-half-stroke'), ('air-freshener', 'spray-can-sparkles'), ('alien-monster', 'alien-8bit'), ('allergies', 'hand-dots'), ('ambulance', 'truck-medical'), ('american-sign-language-interpreting', 'hands-asl-interpreting'), ('analytics', 'chart-mixed'), ('angle-double-down', 'angles-down'), ('angle-double-left', 'angles-left'), ('angle-double-right', 'angles-right'), ('angle-double-up', 'angles-up'), ('angry', 'face-angry'), ('apple-alt', 'apple-whole'), ('apple-crate', 'crate-apple'), ('archive', 'box-archive'), ('arrow-alt-circle-down', 'circle-down'), ('arrow-alt-circle-left', 'circle-left'), ('arrow-alt-circle-right', 'circle-right'), ('arrow-alt-circle-up', 'circle-up'), ('arrow-alt-down', 'down'), ('arrow-alt-from-bottom', 'up-from-line'), ('arrow-alt-from-left', 'right-from-line'), ('arrow-alt-from-right', 'left-from-line'), ('arrow-alt-from-top', 'down-from-line'), ('arrow-alt-left', 'left'), ('arrow-alt-right', 'right'), ('arrow-alt-square-down', 'square-down'), ('arrow-alt-square-left', 'square-left'), ('arrow-alt-square-right', 'square-right'), ('arrow-alt-square-up', 'square-up'), ('arrow-alt-to-bottom', 'down-to-line'), ('arrow-alt-to-left', 'left-to-line'), ('arrow-alt-to-right', 'right-to-line'), ('arrow-alt-to-top', 'up-to-line'), ('arrow-alt-up', 'up'), ('arrow-circle-down', 'circle-arrow-down'), ('arrow-circle-left', 'circle-arrow-left'), ('arrow-circle-right', 'circle-arrow-right'), ('arrow-circle-up', 'circle-arrow-up'), ('arrow-from-bottom', 'arrow-up-from-line'), ('arrow-from-left', 'arrow-right-from-line'), ('arrow-from-right', 'arrow-left-from-line'), ('arrow-from-top', 'arrow-down-from-line'), ('arrow-square-down', 'square-arrow-down'), ('arrow-square-left', 'square-arrow-left'), ('arrow-square-right', 'square-arrow-right'), ('arrow-square-up', 'square-arrow-up'), ('arrow-to-bottom', 'arrow-down-to-line'), ('arrow-to-left', 'arrow-left-to-line'), ('arrow-to-right', 'arrow-right-to-line'), ('arrow-to-top', 'arrow-up-to-line'), ('arrows', 'arrows-up-down-left-right'), ('arrows-alt', 'up-down-left-right'), ('arrows-alt-h', 'left-right'), ('arrows-alt-v', 'up-down'), ('arrows-h', 'arrows-left-right'), ('arrows-v', 'arrows-up-down'), ('assistive-listening-systems', 'ear-listen'), ('atlas', 'book-atlas'), ('atom-alt', 'atom-simple'), ('backspace', 'delete-left'), ('balance-scale', 'scale-balanced'), ('balance-scale-left', 'scale-unbalanced'), ('balance-scale-right', 'scale-unbalanced-flip'), ('band-aid', 'bandage'), ('barcode-alt', 'rectangle-barcode'), ('baseball-ball', 'baseball'), ('basketball-ball', 'basketball'), ('bed-alt', 'bed-front'), ('beer', 'beer-mug-empty'), ('betamax', 'cassette-betamax'), ('bible', 'book-bible'), ('biking', 'person-biking'), ('biking-mountain', 'person-biking-mountain'), ('birthday-cake', 'cake-candles'), ('blind', 'person-walking-with-cane'), ('book-alt', 'book-blank'), ('book-dead', 'book-skull'), ('book-reader', 'book-open-reader'), ('book-spells', 'book-sparkles'), ('border-style', 'border-top-left'), ('border-style-alt', 'border-bottom-right'), ('box-alt', 'box-taped'), ('box-fragile', 'square-fragile'), ('box-full', 'box-open-full'), ('box-up', 'square-this-way-up'), ('box-usd', 'box-dollar'), ('boxes', 'boxes-stacked'), ('boxes-alt', 'boxes-stacked'), ('brackets', 'brackets-square'), ('broadcast-tower', 'tower-broadcast'), ('burn', 'fire-flame-simple'), ('bus-alt', 'bus-simple'), ('calculator-alt', 'calculator-simple'), ('calendar-alt', 'calendar-days'), ('calendar-edit', 'calendar-pen'), ('calendar-times', 'calendar-xmark'), ('camera-alt', 'camera'), ('camera-home', 'camera-security'), ('car-alt', 'car-rear'), ('car-crash', 'car-burst'), ('car-mechanic', 'car-wrench'), ('caravan-alt', 'caravan-simple'), ('caret-circle-down', 'circle-caret-down'), ('caret-circle-left', 'circle-caret-left'), ('caret-circle-right', 'circle-caret-right'), ('caret-circle-up', 'circle-caret-up'), ('caret-square-down', 'square-caret-down'), ('caret-square-left', 'square-caret-left'), ('caret-square-right', 'square-caret-right'), ('caret-square-up', 'square-caret-up'), ('cctv', 'camera-cctv'), ('chalkboard-teacher', 'chalkboard-user'), ('chart-pie-alt', 'chart-pie-simple'), ('check-circle', 'circle-check'), ('check-square', 'square-check'), ('cheeseburger', 'burger-cheese'), ('chess-bishop-alt', 'chess-bishop-piece'), ('chess-clock-alt', 'chess-clock-flip'), ('chess-king-alt', 'chess-king-piece'), ('chess-knight-alt', 'chess-knight-piece'), ('chess-pawn-alt', 'chess-pawn-piece'), ('chess-queen-alt', 'chess-queen-piece'), ('chess-rook-alt', 'chess-rook-piece'), ('chevron-circle-down', 'circle-chevron-down'), ('chevron-circle-left', 'circle-chevron-left'), ('chevron-circle-right', 'circle-chevron-right'), ('chevron-circle-up', 'circle-chevron-up'), ('chevron-double-down', 'chevrons-down'), ('chevron-double-left', 'chevrons-left'), ('chevron-double-right', 'chevrons-right'), ('chevron-double-up', 'chevrons-up'), ('chevron-square-down', 'square-chevron-down'), ('chevron-square-left', 'square-chevron-left'), ('chevron-square-right', 'square-chevron-right'), ('chevron-square-up', 'square-chevron-up'), ('clinic-medical', 'house-chimney-medical'), ('cloud-download', 'cloud-arrow-down'), ('cloud-download-alt', 'cloud-arrow-down'), ('cloud-upload', 'cloud-arrow-up'), ('cloud-upload-alt', 'cloud-arrow-up'), ('cocktail', 'martini-glass-citrus'), ('coffee', 'mug-saucer'), ('coffee-togo', 'cup-togo'), ('cog', 'gear'), ('cogs', 'gears'), ('columns', 'table-columns'), ('comment-alt', 'message'), ('comment-alt-check', 'message-check'), ('comment-alt-dollar', 'message-dollar'), ('comment-alt-dots', 'message-dots'), ('comment-alt-edit', 'message-pen'), ('comment-alt-exclamation', 'message-exclamation'), ('comment-alt-lines', 'message-lines'), ('comment-alt-medical', 'message-medical'), ('comment-alt-minus', 'message-minus'), ('comment-alt-music', 'message-music'), ('comment-alt-plus', 'message-plus'), ('comment-alt-slash', 'message-slash'), ('comment-alt-smile', 'message-smile'), ('comment-alt-times', 'message-xmark'), ('comment-edit', 'comment-pen'), ('comment-times', 'comment-xmark'), ('comments-alt', 'messages'), ('comments-alt-dollar', 'messages-dollar'), ('compress-alt', 'down-left-and-up-right-to-center'), ('compress-arrows-alt', 'minimize'), ('concierge-bell', 'bell-concierge'), ('construction', 'triangle-person-digging'), ('conveyor-belt-alt', 'conveyor-belt-boxes'), ('cowbell-more', 'cowbell-circle-plus'), ('cricket', 'cricket-bat-ball'), ('crop-alt', 'crop-simple'), ('curling', 'curling-stone'), ('cut', 'scissors'), ('deaf', 'ear-deaf'), ('debug', 'ban-bug'), ('desktop-alt', 'desktop'), ('dewpoint', 'droplet-degree'), ('diagnoses', 'person-dots-from-line'), ('digging', 'person-digging'), ('digital-tachograph', 'tachograph-digital'), ('directions', 'diamond-turn-right'), ('dizzy', 'face-dizzy'), ('dolly-flatbed', 'cart-flatbed'), ('dolly-flatbed-alt', 'cart-flatbed-boxes'), ('dolly-flatbed-empty', 'cart-flatbed-empty'), ('donate', 'circle-dollar-to-slot'), ('dot-circle', 'circle-dot'), ('drafting-compass', 'compass-drafting'), ('drone-alt', 'drone-front'), ('dryer-alt', 'dryer-heat'), ('eclipse-alt', 'moon-over-sun'), ('edit', 'pen-to-square'), ('ellipsis-h', 'ellipsis'), ('ellipsis-h-alt', 'ellipsis-stroke'), ('ellipsis-v', 'ellipsis-vertical'), ('ellipsis-v-alt', 'ellipsis-stroke-vertical'), ('envelope-square', 'square-envelope'), ('exchange', 'arrow-right-arrow-left'), ('exchange-alt', 'right-left'), ('exclamation-circle', 'circle-exclamation'), ('exclamation-square', 'square-exclamation'), ('exclamation-triangle', 'triangle-exclamation'), ('expand-alt', 'up-right-and-down-left-from-center'), ('expand-arrows', 'arrows-maximize'), ('expand-arrows-alt', 'maximize'), ('external-link', 'arrow-up-right-from-square'), ('external-link-alt', 'up-right-from-square'), ('external-link-square', 'square-arrow-up-right'), ('external-link-square-alt', 'square-up-right'), ('eyedropper', 'eye-dropper'), ('fast-backward', 'backward-fast'), ('fast-forward', 'forward-fast'), ('feather-alt', 'feather-pointed'), ('female', 'person-dress'), ('field-hockey', 'field-hockey-stick-ball'), ('fighter-jet', 'jet-fighter'), ('file-alt', 'file-lines'), ('file-archive', 'file-zipper'), ('file-chart-line', 'file-chart-column'), ('file-download', 'file-arrow-down'), ('file-edit', 'file-pen'), ('file-medical-alt', 'file-waveform'), ('file-search', 'file-magnifying-glass'), ('file-times', 'file-xmark'), ('file-upload', 'file-arrow-up'), ('film-alt', 'film-simple'), ('fire-alt', 'fire-flame-curved'), ('first-aid', 'kit-medical'), ('fist-raised', 'hand-fist'), ('flag-alt', 'flag-swallowtail'), ('flame', 'fire-flame'), ('flask-poison', 'flask-round-poison'), ('flask-potion', 'flask-round-potion'), ('flushed', 'face-flushed'), ('fog', 'cloud-fog'), ('folder-download', 'folder-arrow-down'), ('folder-times', 'folder-xmark'), ('folder-upload', 'folder-arrow-up'), ('font-awesome-alt', 'square-font-awesome-stroke'), ('font-awesome-flag', 'font-awesome'), ('font-awesome-logo-full', 'font-awesome'), ('football-ball', 'football'), ('fragile', 'wine-glass-crack'), ('frosty-head', 'snowman-head'), ('frown', 'face-frown'), ('frown-open', 'face-frown-open'), ('funnel-dollar', 'filter-circle-dollar'), ('game-board-alt', 'game-board-simple'), ('gamepad-alt', 'gamepad-modern'), ('glass-champagne', 'champagne-glass'), ('glass-cheers', 'champagne-glasses'), ('glass-martini', 'martini-glass-empty'), ('glass-martini-alt', 'martini-glass'), ('glass-whiskey', 'whiskey-glass'), ('glass-whiskey-rocks', 'whiskey-glass-ice'), ('glasses-alt', 'glasses-round'), ('globe-africa', 'earth-africa'), ('globe-americas', 'earth-americas'), ('globe-asia', 'earth-asia'), ('globe-europe', 'earth-europe'), ('golf-ball', 'golf-ball-tee'), ('grimace', 'face-grimace'), ('grin', 'face-grin'), ('grin-alt', 'face-grin-wide'), ('grin-beam', 'face-grin-beam'), ('grin-beam-sweat', 'face-grin-beam-sweat'), ('grin-hearts', 'face-grin-hearts'), ('grin-squint', 'face-grin-squint'), ('grin-squint-tears', 'face-grin-squint-tears'), ('grin-stars', 'face-grin-stars'), ('grin-tears', 'face-grin-tears'), ('grin-tongue', 'face-grin-tongue'), ('grin-tongue-squint', 'face-grin-tongue-squint'), ('grin-tongue-wink', 'face-grin-tongue-wink'), ('grin-wink', 'face-grin-wink'), ('grip-horizontal', 'grip'), ('h-square', 'square-h'), ('hamburger', 'burger'), ('hand-holding-usd', 'hand-holding-dollar'), ('hand-holding-water', 'hand-holding-droplet'), ('hand-paper', 'hand'), ('hand-receiving', 'hands-holding-diamond'), ('hand-rock', 'hand-back-fist'), ('hands-heart', 'hands-holding-heart'), ('hands-helping', 'handshake-angle'), ('hands-usd', 'hands-holding-dollar'), ('hands-wash', 'hands-bubbles'), ('handshake-alt', 'handshake-simple'), ('handshake-alt-slash', 'handshake-simple-slash'), ('hard-hat', 'helmet-safety'), ('hdd', 'hard-drive'), ('head-vr', 'head-side-goggles'), ('headphones-alt', 'headphones-simple'), ('heart-broken', 'heart-crack'), ('heart-circle', 'circle-heart'), ('heart-rate', 'wave-pulse'), ('heart-square', 'square-heart'), ('heartbeat', 'heart-pulse'), ('hiking', 'person-hiking'), ('history', 'clock-rotate-left'), ('home', 'house'), ('home-alt', 'house'), ('home-heart', 'house-heart'), ('home-lg', 'house-chimney'), ('home-lg-alt', 'house'), ('hospital-alt', 'hospital'), ('hospital-symbol', 'circle-h'), ('hot-tub', 'hot-tub-person'), ('hourglass-half', 'hourglass'), ('house-damage', 'house-chimney-crack'), ('house-leave', 'house-person-leave'), ('house-return', 'house-person-return'), ('hryvnia', 'hryvnia-sign'), ('humidity', 'droplet-percent'), ('icons-alt', 'symbols'), ('id-card-alt', 'id-card-clip'), ('industry-alt', 'industry-windows'), ('info-circle', 'circle-info'), ('info-square', 'square-info'), ('innosoft', '42-group'), ('inventory', 'shelves'), ('journal-whills', 'book-journal-whills'), ('kiss', 'face-kiss'), ('kiss-beam', 'face-kiss-beam'), ('kiss-wink-heart', 'face-kiss-wink-heart'), ('landmark-alt', 'landmark-dome'), ('laptop-house', 'house-laptop'), ('laugh', 'face-laugh'), ('laugh-beam', 'face-laugh-beam'), ('laugh-squint', 'face-laugh-squint'), ('laugh-wink', 'face-laugh-wink'), ('level-down', 'arrow-turn-down'), ('level-down-alt', 'turn-down'), ('level-up', 'arrow-turn-up'), ('level-up-alt', 'turn-up'), ('list-alt', 'rectangle-list'), ('location', 'location-crosshairs'), ('location-circle', 'circle-location-arrow'), ('location-slash', 'location-crosshairs-slash'), ('lock-alt', 'lock-keyhole'), ('lock-open-alt', 'lock-keyhole-open'), ('long-arrow-alt-down', 'down-long'), ('long-arrow-alt-left', 'left-long'), ('long-arrow-alt-right', 'right-long'), ('long-arrow-alt-up', 'up-long'), ('long-arrow-down', 'arrow-down-long'), ('long-arrow-left', 'arrow-left-long'), ('long-arrow-right', 'arrow-right-long'), ('long-arrow-up', 'arrow-up-long'), ('low-vision', 'eye-low-vision'), ('luchador', 'luchador-mask'), ('luggage-cart', 'cart-flatbed-suitcase'), ('magic', 'wand-magic'), ('mail-bulk', 'envelopes-bulk'), ('male', 'person'), ('map-marked', 'map-location'), ('map-marked-alt', 'map-location-dot'), ('map-marker', 'location-pin'), ('map-marker-alt', 'location-dot'), ('map-marker-alt-slash', 'location-dot-slash'), ('map-marker-check', 'location-check'), ('map-marker-edit', 'location-pen'), ('map-marker-exclamation', 'location-exclamation'), ('map-marker-minus', 'location-minus'), ('map-marker-plus', 'location-plus'), ('map-marker-question', 'location-question'), ('map-marker-slash', 'location-pin-slash'), ('map-marker-smile', 'location-smile'), ('map-marker-times', 'location-xmark'), ('map-signs', 'signs-post'), ('mars-stroke-h', 'mars-stroke-right'), ('mars-stroke-v', 'mars-stroke-up'), ('medium-m', 'medium'), ('medkit', 'suitcase-medical'), ('meh', 'face-meh'), ('meh-blank', 'face-meh-blank'), ('meh-rolling-eyes', 'face-rolling-eyes'), ('microphone-alt', 'microphone-lines'), ('microphone-alt-slash', 'microphone-lines-slash'), ('mind-share', 'brain-arrow-curved-right'), ('minus-circle', 'circle-minus'), ('minus-hexagon', 'hexagon-minus'), ('minus-octagon', 'octagon-minus'), ('minus-square', 'square-minus'), ('mobile-alt', 'mobile-screen-button'), ('mobile-android', 'mobile'), ('mobile-android-alt', 'mobile-screen'), ('money-bill-alt', 'money-bill-1'), ('money-bill-wave-alt', 'money-bill-1-wave'), ('money-check-alt', 'money-check-dollar'), ('money-check-edit', 'money-check-pen'), ('money-check-edit-alt', 'money-check-dollar-pen'), ('monitor-heart-rate', 'monitor-waveform'), ('mouse', 'computer-mouse'), ('mouse-alt', 'computer-mouse-scrollwheel'), ('mouse-pointer', 'arrow-pointer'), ('music-alt', 'music-note'), ('music-alt-slash', 'music-note-slash'), ('oil-temp', 'oil-temperature'), ('page-break', 'file-dashed-line'), ('paint-brush', 'paintbrush'), ('paint-brush-alt', 'paintbrush-fine'), ('paint-brush-fine', 'paintbrush-fine'), ('pallet-alt', 'pallet-boxes'), ('paragraph-rtl', 'paragraph-left'), ('parking', 'square-parking'), ('parking-circle', 'circle-parking'), ('parking-circle-slash', 'ban-parking'), ('parking-slash', 'square-parking-slash'), ('pastafarianism', 'spaghetti-monster-flying'), ('pause-circle', 'circle-pause'), ('paw-alt', 'paw-simple'), ('pen-alt', 'pen-clip'), ('pen-square', 'square-pen'), ('pencil-alt', 'pencil'), ('pencil-paintbrush', 'pen-paintbrush'), ('pencil-ruler', 'pen-ruler'), ('pennant', 'flag-pennant'), ('people-arrows', 'people-arrows-left-right'), ('people-carry', 'people-carry-box'), ('percentage', 'percent'), ('person-carry', 'person-carry-box'), ('phone-alt', 'phone-flip'), ('phone-laptop', 'laptop-mobile'), ('phone-square', 'square-phone'), ('phone-square-alt', 'square-phone-flip'), ('photo-video', 'photo-film'), ('plane-alt', 'plane-engines'), ('play-circle', 'circle-play'), ('plus-circle', 'circle-plus'), ('plus-hexagon', 'hexagon-plus'), ('plus-octagon', 'octagon-plus'), ('plus-square', 'square-plus'), ('poll', 'square-poll-vertical'), ('poll-h', 'square-poll-horizontal'), ('portal-enter', 'person-to-portal'), ('portal-exit', 'person-from-portal'), ('portrait', 'image-portrait'), ('pound-sign', 'sterling-sign'), ('pray', 'person-praying'), ('praying-hands', 'hands-praying'), ('prescription-bottle-alt', 'prescription-bottle-medical'), ('presentation', 'presentation-screen'), ('print-search', 'print-magnifying-glass'), ('procedures', 'bed-pulse'), ('project-diagram', 'diagram-project'), ('question-circle', 'circle-question'), ('question-square', 'square-question'), ('quran', 'book-quran'), ('rabbit-fast', 'rabbit-running'), ('radiation-alt', 'circle-radiation'), ('radio-alt', 'radio-tuner'), ('random', 'shuffle'), ('rectangle-landscape', 'rectangle'), ('rectangle-portrait', 'rectangle-vertical'), ('redo', 'arrow-rotate-right'), ('redo-alt', 'rotate-right'), ('remove-format', 'text-slash'), ('repeat-1-alt', 'arrows-repeat-1'), ('repeat-alt', 'arrows-repeat'), ('retweet-alt', 'arrows-retweet'), ('rss-square', 'square-rss'), ('running', 'person-running'), ('sad-cry', 'face-sad-cry'), ('sad-tear', 'face-sad-tear'), ('save', 'floppy-disk'), ('sax-hot', 'saxophone-fire'), ('scalpel-path', 'scalpel-line-dashed'), ('scanner-image', 'scanner'), ('search', 'magnifying-glass'), ('search-dollar', 'magnifying-glass-dollar'), ('search-location', 'magnifying-glass-location'), ('search-minus', 'magnifying-glass-minus'), ('search-plus', 'magnifying-glass-plus'), ('sensor-alert', 'sensor-triangle-exclamation'), ('sensor-smoke', 'sensor-cloud'), ('share-alt', 'share-nodes'), ('share-alt-square', 'square-share-nodes'), ('share-square', 'share-from-square'), ('shield-alt', 'shield-halved'), ('shipping-fast', 'truck-fast'), ('shipping-timed', 'truck-clock'), ('shopping-bag', 'bag-shopping'), ('shopping-basket', 'basket-shopping'), ('shopping-cart', 'cart-shopping'), ('shuttle-van', 'van-shuttle'), ('sign', 'sign-hanging'), ('sign-in', 'arrow-right-to-bracket'), ('sign-in-alt', 'right-to-bracket'), ('sign-language', 'hands'), ('sign-out', 'arrow-right-from-bracket'), ('sign-out-alt', 'right-from-bracket'), ('signal-1', 'signal-weak'), ('signal-2', 'signal-fair'), ('signal-3', 'signal-good'), ('signal-4', 'signal-strong'), ('signal-alt', 'signal-bars'), ('signal-alt-1', 'signal-bars-weak'), ('signal-alt-2', 'signal-bars-fair'), ('signal-alt-3', 'signal-bars-good'), ('signal-alt-slash', 'signal-bars-slash'), ('skating', 'person-skating'), ('ski-jump', 'person-ski-jumping'), ('ski-lift', 'person-ski-lift'), ('skiing', 'person-skiing'), ('skiing-nordic', 'person-skiing-nordic'), ('slack-hash', 'slack'), ('sledding', 'person-sledding'), ('sliders-h', 'sliders'), ('sliders-h-square', 'square-sliders'), ('sliders-v', 'sliders-up'), ('sliders-v-square', 'square-sliders-vertical'), ('smile', 'face-smile'), ('smile-beam', 'face-smile-beam'), ('smile-plus', 'face-smile-plus'), ('smile-wink', 'face-smile-wink'), ('smoking-ban', 'ban-smoking'), ('sms', 'comment-sms'), ('snapchat-ghost', 'snapchat'), ('snowboarding', 'person-snowboarding'), ('snowmobile', 'person-snowmobiling'), ('sort-alpha-down', 'arrow-down-a-z'), ('sort-alpha-down-alt', 'arrow-down-z-a'), ('sort-alpha-up', 'arrow-up-a-z'), ('sort-alpha-up-alt', 'arrow-up-z-a'), ('sort-alt', 'arrow-down-arrow-up'), ('sort-amount-down', 'arrow-down-wide-short'), ('sort-amount-down-alt', 'arrow-down-short-wide'), ('sort-amount-up', 'arrow-up-wide-short'), ('sort-amount-up-alt', 'arrow-up-short-wide'), ('sort-circle', 'circle-sort'), ('sort-circle-down', 'circle-sort-down'), ('sort-circle-up', 'circle-sort-up'), ('sort-numeric-down', 'arrow-down-1-9'), ('sort-numeric-down-alt', 'arrow-down-9-1'), ('sort-numeric-up', 'arrow-up-1-9'), ('sort-numeric-up-alt', 'arrow-up-9-1'), ('sort-shapes-down', 'arrow-down-triangle-square'), ('sort-shapes-down-alt', 'arrow-down-square-triangle'), ('sort-shapes-up', 'arrow-up-triangle-square'), ('sort-shapes-up-alt', 'arrow-up-square-triangle'), ('sort-size-down', 'arrow-down-big-small'), ('sort-size-down-alt', 'arrow-down-small-big'), ('sort-size-up', 'arrow-up-big-small'), ('sort-size-up-alt', 'arrow-up-small-big'), ('soup', 'bowl-hot'), ('space-shuttle', 'shuttle-space'), ('space-station-moon-alt', 'space-station-moon-construction'), ('square-root-alt', 'square-root-variable'), ('star-half-alt', 'star-half-stroke'), ('starfighter-alt', 'starfighter-twin-ion-engine'), ('step-backward', 'backward-step'), ('step-forward', 'forward-step'), ('sticky-note', 'note-sticky'), ('stop-circle', 'circle-stop'), ('store-alt', 'shop'), ('store-alt-slash', 'shop-slash'), ('stream', 'bars-staggered'), ('subway', 'train-subway'), ('surprise', 'face-surprise'), ('swimmer', 'person-swimming'), ('swimming-pool', 'water-ladder'), ('sync', 'arrows-rotate'), ('sync-alt', 'rotate'), ('table-tennis', 'table-tennis-paddle-ball'), ('tablet-alt', 'tablet-screen-button'), ('tablet-android', 'tablet'), ('tablet-android-alt', 'tablet-screen'), ('tachometer', 'gauge-simple'), ('tachometer-alt', 'gauge'), ('tachometer-alt-average', 'gauge-med'), ('tachometer-alt-fast', 'gauge'), ('tachometer-alt-fastest', 'gauge-max'), ('tachometer-alt-slow', 'gauge-low'), ('tachometer-alt-slowest', 'gauge-min'), ('tachometer-average', 'gauge-simple-med'), ('tachometer-fast', 'gauge-simple'), ('tachometer-fastest', 'gauge-simple-max'), ('tachometer-slow', 'gauge-simple-low'), ('tachometer-slowest', 'gauge-simple-min'), ('tanakh', 'book-tanakh'), ('tasks', 'list-check'), ('tasks-alt', 'bars-progress'), ('telegram-plane', 'telegram'), ('temperature-down', 'temperature-arrow-down'), ('temperature-frigid', 'temperature-snow'), ('temperature-hot', 'temperature-sun'), ('temperature-up', 'temperature-arrow-up'), ('tenge', 'tenge-sign'), ('th', 'table-cells'), ('th-large', 'table-cells-large'), ('th-list', 'table-list'), ('theater-masks', 'masks-theater'), ('thermometer-empty', 'temperature-empty'), ('thermometer-full', 'temperature-full'), ('thermometer-half', 'temperature-half'), ('thermometer-quarter', 'temperature-quarter'), ('thermometer-three-quarters', 'temperature-three-quarters'), ('thumb-tack', 'thumbtack'), ('thunderstorm', 'cloud-bolt'), ('thunderstorm-moon', 'cloud-bolt-moon'), ('thunderstorm-sun', 'cloud-bolt-sun'), ('ticket-alt', 'ticket-simple'), ('times', 'xmark'), ('times-circle', 'circle-xmark'), ('times-hexagon', 'hexagon-xmark'), ('times-octagon', 'octagon-xmark'), ('times-square', 'square-xmark'), ('tint', 'droplet'), ('tint-slash', 'droplet-slash'), ('tired', 'face-tired'), ('toilet-paper-alt', 'toilet-paper-blank'), ('tombstone-alt', 'tombstone-blank'), ('tools', 'screwdriver-wrench'), ('torah', 'scroll-torah'), ('tram', 'train-tram'), ('transgender-alt', 'transgender'), ('trash-alt', 'trash-can'), ('trash-restore', 'trash-arrow-up'), ('trash-restore-alt', 'trash-can-arrow-up'), ('trash-undo-alt', 'trash-can-undo'), ('tree-alt', 'tree-deciduous'), ('triangle-music', 'triangle-instrument'), ('trophy-alt', 'trophy-star'), ('truck-couch', 'truck-ramp-couch'), ('truck-loading', 'truck-ramp-box'), ('tshirt', 'shirt'), ('tv-alt', 'tv'), ('undo', 'arrow-rotate-left'), ('undo-alt', 'rotate-left'), ('university', 'building-columns'), ('unlink', 'link-slash'), ('unlock-alt', 'unlock-keyhole'), ('usd-circle', 'circle-dollar'), ('usd-square', 'square-dollar'), ('user-alt', 'user-large'), ('user-alt-slash', 'user-large-slash'), ('user-chart', 'chart-user'), ('user-circle', 'circle-user'), ('user-cog', 'user-gear'), ('user-edit', 'user-pen'), ('user-friends', 'user-group'), ('user-hard-hat', 'user-helmet-safety'), ('user-md', 'user-doctor'), ('user-md-chat', 'user-doctor-message'), ('user-times', 'user-xmark'), ('users-class', 'screen-users'), ('users-cog', 'users-gear'), ('users-crown', 'user-group-crown'), ('utensil-fork', 'fork'), ('utensil-knife', 'knife'), ('utensil-spoon', 'spoon'), ('utensils-alt', 'fork-knife'), ('vhs', 'cassette-vhs'), ('volleyball-ball', 'volleyball'), ('volume-down', 'volume-low'), ('volume-mute', 'volume-xmark'), ('volume-up', 'volume-high'), ('vote-nay', 'xmark-to-slot'), ('vote-yea', 'check-to-slot'), ('walking', 'person-walking'), ('warehouse-alt', 'warehouse-full'), ('washer', 'washing-machine'), ('water-lower', 'water-arrow-down'), ('water-rise', 'water-arrow-up'), ('waveform-path', 'waveform-lines'), ('webcam', 'camera-web'), ('webcam-slash', 'camera-web-slash'), ('weight', 'weight-scale'), ('wifi-1', 'wifi-weak'), ('wifi-2', 'wifi-fair'), ('window-alt', 'window-flip'), ('window-close', 'rectangle-xmark'), ('wine-glass-alt', 'wine-glass-empty')) AS mapping(from_icon, to_icon)\n)\nUPDATE post_action_types\nSET icon =\n  CASE\n    WHEN icon LIKE 'fab-%' THEN CONCAT('fab-', remaps.to_icon)\n    WHEN icon LIKE 'far-%' THEN CONCAT('far-', remaps.to_icon)\n    WHEN icon LIKE 'fab fa-%' THEN CONCAT('fab-', remaps.to_icon)\n    WHEN icon LIKE 'far fa-%' THEN CONCAT('far-', remaps.to_icon)\n    ELSE remaps.to_icon\n  END\nFROM remaps\nWHERE icon = remaps.from_icon\n  OR icon = CONCAT('fa-', remaps.from_icon)\n  OR icon = CONCAT('far-', remaps.from_icon)\n  OR icon = CONCAT('fab-', remaps.from_icon)\n  OR icon = CONCAT('far fa-', remaps.from_icon)\n  OR icon = CONCAT('fab fa-', remaps.from_icon)\n  OR icon = CONCAT('fas fa-', remaps.from_icon);\n")
   -> 0.0056s
-- execute("UPDATE post_action_types\nSET icon =\nCASE\n  WHEN icon LIKE 'fas fa-%' THEN SUBSTRING(icon FROM 8)\n  WHEN icon LIKE 'far fa-%' THEN CONCAT('far-', SUBSTRING(icon FROM 8))\n  WHEN icon LIKE 'fab fa-%' THEN CONCAT('fab-', SUBSTRING(icon FROM 8))\n  WHEN icon LIKE 'fa-%' THEN SUBSTRING(icon FROM 4)\n  ELSE icon\nEND\nWHERE icon LIKE 'fa-%'\n  OR icon LIKE 'far fa-%'\n  OR icon LIKE 'fab fa-%'\n  OR icon LIKE 'fas fa-%';\n")
   -> 0.0003s
-- execute("WITH remaps AS (\n  SELECT from_icon, to_icon FROM (VALUES ('adjust', 'circle-half-stroke'), ('air-freshener', 'spray-can-sparkles'), ('alien-monster', 'alien-8bit'), ('allergies', 'hand-dots'), ('ambulance', 'truck-medical'), ('american-sign-language-interpreting', 'hands-asl-interpreting'), ('analytics', 'chart-mixed'), ('angle-double-down', 'angles-down'), ('angle-double-left', 'angles-left'), ('angle-double-right', 'angles-right'), ('angle-double-up', 'angles-up'), ('angry', 'face-angry'), ('apple-alt', 'apple-whole'), ('apple-crate', 'crate-apple'), ('archive', 'box-archive'), ('arrow-alt-circle-down', 'circle-down'), ('arrow-alt-circle-left', 'circle-left'), ('arrow-alt-circle-right', 'circle-right'), ('arrow-alt-circle-up', 'circle-up'), ('arrow-alt-down', 'down'), ('arrow-alt-from-bottom', 'up-from-line'), ('arrow-alt-from-left', 'right-from-line'), ('arrow-alt-from-right', 'left-from-line'), ('arrow-alt-from-top', 'down-from-line'), ('arrow-alt-left', 'left'), ('arrow-alt-right', 'right'), ('arrow-alt-square-down', 'square-down'), ('arrow-alt-square-left', 'square-left'), ('arrow-alt-square-right', 'square-right'), ('arrow-alt-square-up', 'square-up'), ('arrow-alt-to-bottom', 'down-to-line'), ('arrow-alt-to-left', 'left-to-line'), ('arrow-alt-to-right', 'right-to-line'), ('arrow-alt-to-top', 'up-to-line'), ('arrow-alt-up', 'up'), ('arrow-circle-down', 'circle-arrow-down'), ('arrow-circle-left', 'circle-arrow-left'), ('arrow-circle-right', 'circle-arrow-right'), ('arrow-circle-up', 'circle-arrow-up'), ('arrow-from-bottom', 'arrow-up-from-line'), ('arrow-from-left', 'arrow-right-from-line'), ('arrow-from-right', 'arrow-left-from-line'), ('arrow-from-top', 'arrow-down-from-line'), ('arrow-square-down', 'square-arrow-down'), ('arrow-square-left', 'square-arrow-left'), ('arrow-square-right', 'square-arrow-right'), ('arrow-square-up', 'square-arrow-up'), ('arrow-to-bottom', 'arrow-down-to-line'), ('arrow-to-left', 'arrow-left-to-line'), ('arrow-to-right', 'arrow-right-to-line'), ('arrow-to-top', 'arrow-up-to-line'), ('arrows', 'arrows-up-down-left-right'), ('arrows-alt', 'up-down-left-right'), ('arrows-alt-h', 'left-right'), ('arrows-alt-v', 'up-down'), ('arrows-h', 'arrows-left-right'), ('arrows-v', 'arrows-up-down'), ('assistive-listening-systems', 'ear-listen'), ('atlas', 'book-atlas'), ('atom-alt', 'atom-simple'), ('backspace', 'delete-left'), ('balance-scale', 'scale-balanced'), ('balance-scale-left', 'scale-unbalanced'), ('balance-scale-right', 'scale-unbalanced-flip'), ('band-aid', 'bandage'), ('barcode-alt', 'rectangle-barcode'), ('baseball-ball', 'baseball'), ('basketball-ball', 'basketball'), ('bed-alt', 'bed-front'), ('beer', 'beer-mug-empty'), ('betamax', 'cassette-betamax'), ('bible', 'book-bible'), ('biking', 'person-biking'), ('biking-mountain', 'person-biking-mountain'), ('birthday-cake', 'cake-candles'), ('blind', 'person-walking-with-cane'), ('book-alt', 'book-blank'), ('book-dead', 'book-skull'), ('book-reader', 'book-open-reader'), ('book-spells', 'book-sparkles'), ('border-style', 'border-top-left'), ('border-style-alt', 'border-bottom-right'), ('box-alt', 'box-taped'), ('box-fragile', 'square-fragile'), ('box-full', 'box-open-full'), ('box-up', 'square-this-way-up'), ('box-usd', 'box-dollar'), ('boxes', 'boxes-stacked'), ('boxes-alt', 'boxes-stacked'), ('brackets', 'brackets-square'), ('broadcast-tower', 'tower-broadcast'), ('burn', 'fire-flame-simple'), ('bus-alt', 'bus-simple'), ('calculator-alt', 'calculator-simple'), ('calendar-alt', 'calendar-days'), ('calendar-edit', 'calendar-pen'), ('calendar-times', 'calendar-xmark'), ('camera-alt', 'camera'), ('camera-home', 'camera-security'), ('car-alt', 'car-rear'), ('car-crash', 'car-burst'), ('car-mechanic', 'car-wrench'), ('caravan-alt', 'caravan-simple'), ('caret-circle-down', 'circle-caret-down'), ('caret-circle-left', 'circle-caret-left'), ('caret-circle-right', 'circle-caret-right'), ('caret-circle-up', 'circle-caret-up'), ('caret-square-down', 'square-caret-down'), ('caret-square-left', 'square-caret-left'), ('caret-square-right', 'square-caret-right'), ('caret-square-up', 'square-caret-up'), ('cctv', 'camera-cctv'), ('chalkboard-teacher', 'chalkboard-user'), ('chart-pie-alt', 'chart-pie-simple'), ('check-circle', 'circle-check'), ('check-square', 'square-check'), ('cheeseburger', 'burger-cheese'), ('chess-bishop-alt', 'chess-bishop-piece'), ('chess-clock-alt', 'chess-clock-flip'), ('chess-king-alt', 'chess-king-piece'), ('chess-knight-alt', 'chess-knight-piece'), ('chess-pawn-alt', 'chess-pawn-piece'), ('chess-queen-alt', 'chess-queen-piece'), ('chess-rook-alt', 'chess-rook-piece'), ('chevron-circle-down', 'circle-chevron-down'), ('chevron-circle-left', 'circle-chevron-left'), ('chevron-circle-right', 'circle-chevron-right'), ('chevron-circle-up', 'circle-chevron-up'), ('chevron-double-down', 'chevrons-down'), ('chevron-double-left', 'chevrons-left'), ('chevron-double-right', 'chevrons-right'), ('chevron-double-up', 'chevrons-up'), ('chevron-square-down', 'square-chevron-down'), ('chevron-square-left', 'square-chevron-left'), ('chevron-square-right', 'square-chevron-right'), ('chevron-square-up', 'square-chevron-up'), ('clinic-medical', 'house-chimney-medical'), ('cloud-download', 'cloud-arrow-down'), ('cloud-download-alt', 'cloud-arrow-down'), ('cloud-upload', 'cloud-arrow-up'), ('cloud-upload-alt', 'cloud-arrow-up'), ('cocktail', 'martini-glass-citrus'), ('coffee', 'mug-saucer'), ('coffee-togo', 'cup-togo'), ('cog', 'gear'), ('cogs', 'gears'), ('columns', 'table-columns'), ('comment-alt', 'message'), ('comment-alt-check', 'message-check'), ('comment-alt-dollar', 'message-dollar'), ('comment-alt-dots', 'message-dots'), ('comment-alt-edit', 'message-pen'), ('comment-alt-exclamation', 'message-exclamation'), ('comment-alt-lines', 'message-lines'), ('comment-alt-medical', 'message-medical'), ('comment-alt-minus', 'message-minus'), ('comment-alt-music', 'message-music'), ('comment-alt-plus', 'message-plus'), ('comment-alt-slash', 'message-slash'), ('comment-alt-smile', 'message-smile'), ('comment-alt-times', 'message-xmark'), ('comment-edit', 'comment-pen'), ('comment-times', 'comment-xmark'), ('comments-alt', 'messages'), ('comments-alt-dollar', 'messages-dollar'), ('compress-alt', 'down-left-and-up-right-to-center'), ('compress-arrows-alt', 'minimize'), ('concierge-bell', 'bell-concierge'), ('construction', 'triangle-person-digging'), ('conveyor-belt-alt', 'conveyor-belt-boxes'), ('cowbell-more', 'cowbell-circle-plus'), ('cricket', 'cricket-bat-ball'), ('crop-alt', 'crop-simple'), ('curling', 'curling-stone'), ('cut', 'scissors'), ('deaf', 'ear-deaf'), ('debug', 'ban-bug'), ('desktop-alt', 'desktop'), ('dewpoint', 'droplet-degree'), ('diagnoses', 'person-dots-from-line'), ('digging', 'person-digging'), ('digital-tachograph', 'tachograph-digital'), ('directions', 'diamond-turn-right'), ('dizzy', 'face-dizzy'), ('dolly-flatbed', 'cart-flatbed'), ('dolly-flatbed-alt', 'cart-flatbed-boxes'), ('dolly-flatbed-empty', 'cart-flatbed-empty'), ('donate', 'circle-dollar-to-slot'), ('dot-circle', 'circle-dot'), ('drafting-compass', 'compass-drafting'), ('drone-alt', 'drone-front'), ('dryer-alt', 'dryer-heat'), ('eclipse-alt', 'moon-over-sun'), ('edit', 'pen-to-square'), ('ellipsis-h', 'ellipsis'), ('ellipsis-h-alt', 'ellipsis-stroke'), ('ellipsis-v', 'ellipsis-vertical'), ('ellipsis-v-alt', 'ellipsis-stroke-vertical'), ('envelope-square', 'square-envelope'), ('exchange', 'arrow-right-arrow-left'), ('exchange-alt', 'right-left'), ('exclamation-circle', 'circle-exclamation'), ('exclamation-square', 'square-exclamation'), ('exclamation-triangle', 'triangle-exclamation'), ('expand-alt', 'up-right-and-down-left-from-center'), ('expand-arrows', 'arrows-maximize'), ('expand-arrows-alt', 'maximize'), ('external-link', 'arrow-up-right-from-square'), ('external-link-alt', 'up-right-from-square'), ('external-link-square', 'square-arrow-up-right'), ('external-link-square-alt', 'square-up-right'), ('eyedropper', 'eye-dropper'), ('fast-backward', 'backward-fast'), ('fast-forward', 'forward-fast'), ('feather-alt', 'feather-pointed'), ('female', 'person-dress'), ('field-hockey', 'field-hockey-stick-ball'), ('fighter-jet', 'jet-fighter'), ('file-alt', 'file-lines'), ('file-archive', 'file-zipper'), ('file-chart-line', 'file-chart-column'), ('file-download', 'file-arrow-down'), ('file-edit', 'file-pen'), ('file-medical-alt', 'file-waveform'), ('file-search', 'file-magnifying-glass'), ('file-times', 'file-xmark'), ('file-upload', 'file-arrow-up'), ('film-alt', 'film-simple'), ('fire-alt', 'fire-flame-curved'), ('first-aid', 'kit-medical'), ('fist-raised', 'hand-fist'), ('flag-alt', 'flag-swallowtail'), ('flame', 'fire-flame'), ('flask-poison', 'flask-round-poison'), ('flask-potion', 'flask-round-potion'), ('flushed', 'face-flushed'), ('fog', 'cloud-fog'), ('folder-download', 'folder-arrow-down'), ('folder-times', 'folder-xmark'), ('folder-upload', 'folder-arrow-up'), ('font-awesome-alt', 'square-font-awesome-stroke'), ('font-awesome-flag', 'font-awesome'), ('font-awesome-logo-full', 'font-awesome'), ('football-ball', 'football'), ('fragile', 'wine-glass-crack'), ('frosty-head', 'snowman-head'), ('frown', 'face-frown'), ('frown-open', 'face-frown-open'), ('funnel-dollar', 'filter-circle-dollar'), ('game-board-alt', 'game-board-simple'), ('gamepad-alt', 'gamepad-modern'), ('glass-champagne', 'champagne-glass'), ('glass-cheers', 'champagne-glasses'), ('glass-martini', 'martini-glass-empty'), ('glass-martini-alt', 'martini-glass'), ('glass-whiskey', 'whiskey-glass'), ('glass-whiskey-rocks', 'whiskey-glass-ice'), ('glasses-alt', 'glasses-round'), ('globe-africa', 'earth-africa'), ('globe-americas', 'earth-americas'), ('globe-asia', 'earth-asia'), ('globe-europe', 'earth-europe'), ('golf-ball', 'golf-ball-tee'), ('grimace', 'face-grimace'), ('grin', 'face-grin'), ('grin-alt', 'face-grin-wide'), ('grin-beam', 'face-grin-beam'), ('grin-beam-sweat', 'face-grin-beam-sweat'), ('grin-hearts', 'face-grin-hearts'), ('grin-squint', 'face-grin-squint'), ('grin-squint-tears', 'face-grin-squint-tears'), ('grin-stars', 'face-grin-stars'), ('grin-tears', 'face-grin-tears'), ('grin-tongue', 'face-grin-tongue'), ('grin-tongue-squint', 'face-grin-tongue-squint'), ('grin-tongue-wink', 'face-grin-tongue-wink'), ('grin-wink', 'face-grin-wink'), ('grip-horizontal', 'grip'), ('h-square', 'square-h'), ('hamburger', 'burger'), ('hand-holding-usd', 'hand-holding-dollar'), ('hand-holding-water', 'hand-holding-droplet'), ('hand-paper', 'hand'), ('hand-receiving', 'hands-holding-diamond'), ('hand-rock', 'hand-back-fist'), ('hands-heart', 'hands-holding-heart'), ('hands-helping', 'handshake-angle'), ('hands-usd', 'hands-holding-dollar'), ('hands-wash', 'hands-bubbles'), ('handshake-alt', 'handshake-simple'), ('handshake-alt-slash', 'handshake-simple-slash'), ('hard-hat', 'helmet-safety'), ('hdd', 'hard-drive'), ('head-vr', 'head-side-goggles'), ('headphones-alt', 'headphones-simple'), ('heart-broken', 'heart-crack'), ('heart-circle', 'circle-heart'), ('heart-rate', 'wave-pulse'), ('heart-square', 'square-heart'), ('heartbeat', 'heart-pulse'), ('hiking', 'person-hiking'), ('history', 'clock-rotate-left'), ('home', 'house'), ('home-alt', 'house'), ('home-heart', 'house-heart'), ('home-lg', 'house-chimney'), ('home-lg-alt', 'house'), ('hospital-alt', 'hospital'), ('hospital-symbol', 'circle-h'), ('hot-tub', 'hot-tub-person'), ('hourglass-half', 'hourglass'), ('house-damage', 'house-chimney-crack'), ('house-leave', 'house-person-leave'), ('house-return', 'house-person-return'), ('hryvnia', 'hryvnia-sign'), ('humidity', 'droplet-percent'), ('icons-alt', 'symbols'), ('id-card-alt', 'id-card-clip'), ('industry-alt', 'industry-windows'), ('info-circle', 'circle-info'), ('info-square', 'square-info'), ('innosoft', '42-group'), ('inventory', 'shelves'), ('journal-whills', 'book-journal-whills'), ('kiss', 'face-kiss'), ('kiss-beam', 'face-kiss-beam'), ('kiss-wink-heart', 'face-kiss-wink-heart'), ('landmark-alt', 'landmark-dome'), ('laptop-house', 'house-laptop'), ('laugh', 'face-laugh'), ('laugh-beam', 'face-laugh-beam'), ('laugh-squint', 'face-laugh-squint'), ('laugh-wink', 'face-laugh-wink'), ('level-down', 'arrow-turn-down'), ('level-down-alt', 'turn-down'), ('level-up', 'arrow-turn-up'), ('level-up-alt', 'turn-up'), ('list-alt', 'rectangle-list'), ('location', 'location-crosshairs'), ('location-circle', 'circle-location-arrow'), ('location-slash', 'location-crosshairs-slash'), ('lock-alt', 'lock-keyhole'), ('lock-open-alt', 'lock-keyhole-open'), ('long-arrow-alt-down', 'down-long'), ('long-arrow-alt-left', 'left-long'), ('long-arrow-alt-right', 'right-long'), ('long-arrow-alt-up', 'up-long'), ('long-arrow-down', 'arrow-down-long'), ('long-arrow-left', 'arrow-left-long'), ('long-arrow-right', 'arrow-right-long'), ('long-arrow-up', 'arrow-up-long'), ('low-vision', 'eye-low-vision'), ('luchador', 'luchador-mask'), ('luggage-cart', 'cart-flatbed-suitcase'), ('magic', 'wand-magic'), ('mail-bulk', 'envelopes-bulk'), ('male', 'person'), ('map-marked', 'map-location'), ('map-marked-alt', 'map-location-dot'), ('map-marker', 'location-pin'), ('map-marker-alt', 'location-dot'), ('map-marker-alt-slash', 'location-dot-slash'), ('map-marker-check', 'location-check'), ('map-marker-edit', 'location-pen'), ('map-marker-exclamation', 'location-exclamation'), ('map-marker-minus', 'location-minus'), ('map-marker-plus', 'location-plus'), ('map-marker-question', 'location-question'), ('map-marker-slash', 'location-pin-slash'), ('map-marker-smile', 'location-smile'), ('map-marker-times', 'location-xmark'), ('map-signs', 'signs-post'), ('mars-stroke-h', 'mars-stroke-right'), ('mars-stroke-v', 'mars-stroke-up'), ('medium-m', 'medium'), ('medkit', 'suitcase-medical'), ('meh', 'face-meh'), ('meh-blank', 'face-meh-blank'), ('meh-rolling-eyes', 'face-rolling-eyes'), ('microphone-alt', 'microphone-lines'), ('microphone-alt-slash', 'microphone-lines-slash'), ('mind-share', 'brain-arrow-curved-right'), ('minus-circle', 'circle-minus'), ('minus-hexagon', 'hexagon-minus'), ('minus-octagon', 'octagon-minus'), ('minus-square', 'square-minus'), ('mobile-alt', 'mobile-screen-button'), ('mobile-android', 'mobile'), ('mobile-android-alt', 'mobile-screen'), ('money-bill-alt', 'money-bill-1'), ('money-bill-wave-alt', 'money-bill-1-wave'), ('money-check-alt', 'money-check-dollar'), ('money-check-edit', 'money-check-pen'), ('money-check-edit-alt', 'money-check-dollar-pen'), ('monitor-heart-rate', 'monitor-waveform'), ('mouse', 'computer-mouse'), ('mouse-alt', 'computer-mouse-scrollwheel'), ('mouse-pointer', 'arrow-pointer'), ('music-alt', 'music-note'), ('music-alt-slash', 'music-note-slash'), ('oil-temp', 'oil-temperature'), ('page-break', 'file-dashed-line'), ('paint-brush', 'paintbrush'), ('paint-brush-alt', 'paintbrush-fine'), ('paint-brush-fine', 'paintbrush-fine'), ('pallet-alt', 'pallet-boxes'), ('paragraph-rtl', 'paragraph-left'), ('parking', 'square-parking'), ('parking-circle', 'circle-parking'), ('parking-circle-slash', 'ban-parking'), ('parking-slash', 'square-parking-slash'), ('pastafarianism', 'spaghetti-monster-flying'), ('pause-circle', 'circle-pause'), ('paw-alt', 'paw-simple'), ('pen-alt', 'pen-clip'), ('pen-square', 'square-pen'), ('pencil-alt', 'pencil'), ('pencil-paintbrush', 'pen-paintbrush'), ('pencil-ruler', 'pen-ruler'), ('pennant', 'flag-pennant'), ('people-arrows', 'people-arrows-left-right'), ('people-carry', 'people-carry-box'), ('percentage', 'percent'), ('person-carry', 'person-carry-box'), ('phone-alt', 'phone-flip'), ('phone-laptop', 'laptop-mobile'), ('phone-square', 'square-phone'), ('phone-square-alt', 'square-phone-flip'), ('photo-video', 'photo-film'), ('plane-alt', 'plane-engines'), ('play-circle', 'circle-play'), ('plus-circle', 'circle-plus'), ('plus-hexagon', 'hexagon-plus'), ('plus-octagon', 'octagon-plus'), ('plus-square', 'square-plus'), ('poll', 'square-poll-vertical'), ('poll-h', 'square-poll-horizontal'), ('portal-enter', 'person-to-portal'), ('portal-exit', 'person-from-portal'), ('portrait', 'image-portrait'), ('pound-sign', 'sterling-sign'), ('pray', 'person-praying'), ('praying-hands', 'hands-praying'), ('prescription-bottle-alt', 'prescription-bottle-medical'), ('presentation', 'presentation-screen'), ('print-search', 'print-magnifying-glass'), ('procedures', 'bed-pulse'), ('project-diagram', 'diagram-project'), ('question-circle', 'circle-question'), ('question-square', 'square-question'), ('quran', 'book-quran'), ('rabbit-fast', 'rabbit-running'), ('radiation-alt', 'circle-radiation'), ('radio-alt', 'radio-tuner'), ('random', 'shuffle'), ('rectangle-landscape', 'rectangle'), ('rectangle-portrait', 'rectangle-vertical'), ('redo', 'arrow-rotate-right'), ('redo-alt', 'rotate-right'), ('remove-format', 'text-slash'), ('repeat-1-alt', 'arrows-repeat-1'), ('repeat-alt', 'arrows-repeat'), ('retweet-alt', 'arrows-retweet'), ('rss-square', 'square-rss'), ('running', 'person-running'), ('sad-cry', 'face-sad-cry'), ('sad-tear', 'face-sad-tear'), ('save', 'floppy-disk'), ('sax-hot', 'saxophone-fire'), ('scalpel-path', 'scalpel-line-dashed'), ('scanner-image', 'scanner'), ('search', 'magnifying-glass'), ('search-dollar', 'magnifying-glass-dollar'), ('search-location', 'magnifying-glass-location'), ('search-minus', 'magnifying-glass-minus'), ('search-plus', 'magnifying-glass-plus'), ('sensor-alert', 'sensor-triangle-exclamation'), ('sensor-smoke', 'sensor-cloud'), ('share-alt', 'share-nodes'), ('share-alt-square', 'square-share-nodes'), ('share-square', 'share-from-square'), ('shield-alt', 'shield-halved'), ('shipping-fast', 'truck-fast'), ('shipping-timed', 'truck-clock'), ('shopping-bag', 'bag-shopping'), ('shopping-basket', 'basket-shopping'), ('shopping-cart', 'cart-shopping'), ('shuttle-van', 'van-shuttle'), ('sign', 'sign-hanging'), ('sign-in', 'arrow-right-to-bracket'), ('sign-in-alt', 'right-to-bracket'), ('sign-language', 'hands'), ('sign-out', 'arrow-right-from-bracket'), ('sign-out-alt', 'right-from-bracket'), ('signal-1', 'signal-weak'), ('signal-2', 'signal-fair'), ('signal-3', 'signal-good'), ('signal-4', 'signal-strong'), ('signal-alt', 'signal-bars'), ('signal-alt-1', 'signal-bars-weak'), ('signal-alt-2', 'signal-bars-fair'), ('signal-alt-3', 'signal-bars-good'), ('signal-alt-slash', 'signal-bars-slash'), ('skating', 'person-skating'), ('ski-jump', 'person-ski-jumping'), ('ski-lift', 'person-ski-lift'), ('skiing', 'person-skiing'), ('skiing-nordic', 'person-skiing-nordic'), ('slack-hash', 'slack'), ('sledding', 'person-sledding'), ('sliders-h', 'sliders'), ('sliders-h-square', 'square-sliders'), ('sliders-v', 'sliders-up'), ('sliders-v-square', 'square-sliders-vertical'), ('smile', 'face-smile'), ('smile-beam', 'face-smile-beam'), ('smile-plus', 'face-smile-plus'), ('smile-wink', 'face-smile-wink'), ('smoking-ban', 'ban-smoking'), ('sms', 'comment-sms'), ('snapchat-ghost', 'snapchat'), ('snowboarding', 'person-snowboarding'), ('snowmobile', 'person-snowmobiling'), ('sort-alpha-down', 'arrow-down-a-z'), ('sort-alpha-down-alt', 'arrow-down-z-a'), ('sort-alpha-up', 'arrow-up-a-z'), ('sort-alpha-up-alt', 'arrow-up-z-a'), ('sort-alt', 'arrow-down-arrow-up'), ('sort-amount-down', 'arrow-down-wide-short'), ('sort-amount-down-alt', 'arrow-down-short-wide'), ('sort-amount-up', 'arrow-up-wide-short'), ('sort-amount-up-alt', 'arrow-up-short-wide'), ('sort-circle', 'circle-sort'), ('sort-circle-down', 'circle-sort-down'), ('sort-circle-up', 'circle-sort-up'), ('sort-numeric-down', 'arrow-down-1-9'), ('sort-numeric-down-alt', 'arrow-down-9-1'), ('sort-numeric-up', 'arrow-up-1-9'), ('sort-numeric-up-alt', 'arrow-up-9-1'), ('sort-shapes-down', 'arrow-down-triangle-square'), ('sort-shapes-down-alt', 'arrow-down-square-triangle'), ('sort-shapes-up', 'arrow-up-triangle-square'), ('sort-shapes-up-alt', 'arrow-up-square-triangle'), ('sort-size-down', 'arrow-down-big-small'), ('sort-size-down-alt', 'arrow-down-small-big'), ('sort-size-up', 'arrow-up-big-small'), ('sort-size-up-alt', 'arrow-up-small-big'), ('soup', 'bowl-hot'), ('space-shuttle', 'shuttle-space'), ('space-station-moon-alt', 'space-station-moon-construction'), ('square-root-alt', 'square-root-variable'), ('star-half-alt', 'star-half-stroke'), ('starfighter-alt', 'starfighter-twin-ion-engine'), ('step-backward', 'backward-step'), ('step-forward', 'forward-step'), ('sticky-note', 'note-sticky'), ('stop-circle', 'circle-stop'), ('store-alt', 'shop'), ('store-alt-slash', 'shop-slash'), ('stream', 'bars-staggered'), ('subway', 'train-subway'), ('surprise', 'face-surprise'), ('swimmer', 'person-swimming'), ('swimming-pool', 'water-ladder'), ('sync', 'arrows-rotate'), ('sync-alt', 'rotate'), ('table-tennis', 'table-tennis-paddle-ball'), ('tablet-alt', 'tablet-screen-button'), ('tablet-android', 'tablet'), ('tablet-android-alt', 'tablet-screen'), ('tachometer', 'gauge-simple'), ('tachometer-alt', 'gauge'), ('tachometer-alt-average', 'gauge-med'), ('tachometer-alt-fast', 'gauge'), ('tachometer-alt-fastest', 'gauge-max'), ('tachometer-alt-slow', 'gauge-low'), ('tachometer-alt-slowest', 'gauge-min'), ('tachometer-average', 'gauge-simple-med'), ('tachometer-fast', 'gauge-simple'), ('tachometer-fastest', 'gauge-simple-max'), ('tachometer-slow', 'gauge-simple-low'), ('tachometer-slowest', 'gauge-simple-min'), ('tanakh', 'book-tanakh'), ('tasks', 'list-check'), ('tasks-alt', 'bars-progress'), ('telegram-plane', 'telegram'), ('temperature-down', 'temperature-arrow-down'), ('temperature-frigid', 'temperature-snow'), ('temperature-hot', 'temperature-sun'), ('temperature-up', 'temperature-arrow-up'), ('tenge', 'tenge-sign'), ('th', 'table-cells'), ('th-large', 'table-cells-large'), ('th-list', 'table-list'), ('theater-masks', 'masks-theater'), ('thermometer-empty', 'temperature-empty'), ('thermometer-full', 'temperature-full'), ('thermometer-half', 'temperature-half'), ('thermometer-quarter', 'temperature-quarter'), ('thermometer-three-quarters', 'temperature-three-quarters'), ('thumb-tack', 'thumbtack'), ('thunderstorm', 'cloud-bolt'), ('thunderstorm-moon', 'cloud-bolt-moon'), ('thunderstorm-sun', 'cloud-bolt-sun'), ('ticket-alt', 'ticket-simple'), ('times', 'xmark'), ('times-circle', 'circle-xmark'), ('times-hexagon', 'hexagon-xmark'), ('times-octagon', 'octagon-xmark'), ('times-square', 'square-xmark'), ('tint', 'droplet'), ('tint-slash', 'droplet-slash'), ('tired', 'face-tired'), ('toilet-paper-alt', 'toilet-paper-blank'), ('tombstone-alt', 'tombstone-blank'), ('tools', 'screwdriver-wrench'), ('torah', 'scroll-torah'), ('tram', 'train-tram'), ('transgender-alt', 'transgender'), ('trash-alt', 'trash-can'), ('trash-restore', 'trash-arrow-up'), ('trash-restore-alt', 'trash-can-arrow-up'), ('trash-undo-alt', 'trash-can-undo'), ('tree-alt', 'tree-deciduous'), ('triangle-music', 'triangle-instrument'), ('trophy-alt', 'trophy-star'), ('truck-couch', 'truck-ramp-couch'), ('truck-loading', 'truck-ramp-box'), ('tshirt', 'shirt'), ('tv-alt', 'tv'), ('undo', 'arrow-rotate-left'), ('undo-alt', 'rotate-left'), ('university', 'building-columns'), ('unlink', 'link-slash'), ('unlock-alt', 'unlock-keyhole'), ('usd-circle', 'circle-dollar'), ('usd-square', 'square-dollar'), ('user-alt', 'user-large'), ('user-alt-slash', 'user-large-slash'), ('user-chart', 'chart-user'), ('user-circle', 'circle-user'), ('user-cog', 'user-gear'), ('user-edit', 'user-pen'), ('user-friends', 'user-group'), ('user-hard-hat', 'user-helmet-safety'), ('user-md', 'user-doctor'), ('user-md-chat', 'user-doctor-message'), ('user-times', 'user-xmark'), ('users-class', 'screen-users'), ('users-cog', 'users-gear'), ('users-crown', 'user-group-crown'), ('utensil-fork', 'fork'), ('utensil-knife', 'knife'), ('utensil-spoon', 'spoon'), ('utensils-alt', 'fork-knife'), ('vhs', 'cassette-vhs'), ('volleyball-ball', 'volleyball'), ('volume-down', 'volume-low'), ('volume-mute', 'volume-xmark'), ('volume-up', 'volume-high'), ('vote-nay', 'xmark-to-slot'), ('vote-yea', 'check-to-slot'), ('walking', 'person-walking'), ('warehouse-alt', 'warehouse-full'), ('washer', 'washing-machine'), ('water-lower', 'water-arrow-down'), ('water-rise', 'water-arrow-up'), ('waveform-path', 'waveform-lines'), ('webcam', 'camera-web'), ('webcam-slash', 'camera-web-slash'), ('weight', 'weight-scale'), ('wifi-1', 'wifi-weak'), ('wifi-2', 'wifi-fair'), ('window-alt', 'window-flip'), ('window-close', 'rectangle-xmark'), ('wine-glass-alt', 'wine-glass-empty')) AS mapping(from_icon, to_icon)\n)\nUPDATE badges\nSET icon =\n  CASE\n    WHEN icon LIKE 'fab-%' THEN CONCAT('fab-', remaps.to_icon)\n    WHEN icon LIKE 'far-%' THEN CONCAT('far-', remaps.to_icon)\n    WHEN icon LIKE 'fab fa-%' THEN CONCAT('fab-', remaps.to_icon)\n    WHEN icon LIKE 'far fa-%' THEN CONCAT('far-', remaps.to_icon)\n    ELSE remaps.to_icon\n  END\nFROM remaps\nWHERE icon = remaps.from_icon\n  OR icon = CONCAT('fa-', remaps.from_icon)\n  OR icon = CONCAT('far-', remaps.from_icon)\n  OR icon = CONCAT('fab-', remaps.from_icon)\n  OR icon = CONCAT('far fa-', remaps.from_icon)\n  OR icon = CONCAT('fab fa-', remaps.from_icon)\n  OR icon = CONCAT('fas fa-', remaps.from_icon);\n")
   -> 0.0303s
-- execute("UPDATE badges\nSET icon =\nCASE\n  WHEN icon LIKE 'fas fa-%' THEN SUBSTRING(icon FROM 8)\n  WHEN icon LIKE 'far fa-%' THEN CONCAT('far-', SUBSTRING(icon FROM 8))\n  WHEN icon LIKE 'fab fa-%' THEN CONCAT('fab-', SUBSTRING(icon FROM 8))\n  WHEN icon LIKE 'fa-%' THEN SUBSTRING(icon FROM 4)\n  ELSE icon\nEND\nWHERE icon LIKE 'fa-%'\n  OR icon LIKE 'far fa-%'\n  OR icon LIKE 'fab fa-%'\n  OR icon LIKE 'fas fa-%';\n")
   -> 0.0005s
-- execute("WITH remaps AS (\n  SELECT from_icon, to_icon FROM (VALUES ('adjust', 'circle-half-stroke'), ('air-freshener', 'spray-can-sparkles'), ('alien-monster', 'alien-8bit'), ('allergies', 'hand-dots'), ('ambulance', 'truck-medical'), ('american-sign-language-interpreting', 'hands-asl-interpreting'), ('analytics', 'chart-mixed'), ('angle-double-down', 'angles-down'), ('angle-double-left', 'angles-left'), ('angle-double-right', 'angles-right'), ('angle-double-up', 'angles-up'), ('angry', 'face-angry'), ('apple-alt', 'apple-whole'), ('apple-crate', 'crate-apple'), ('archive', 'box-archive'), ('arrow-alt-circle-down', 'circle-down'), ('arrow-alt-circle-left', 'circle-left'), ('arrow-alt-circle-right', 'circle-right'), ('arrow-alt-circle-up', 'circle-up'), ('arrow-alt-down', 'down'), ('arrow-alt-from-bottom', 'up-from-line'), ('arrow-alt-from-left', 'right-from-line'), ('arrow-alt-from-right', 'left-from-line'), ('arrow-alt-from-top', 'down-from-line'), ('arrow-alt-left', 'left'), ('arrow-alt-right', 'right'), ('arrow-alt-square-down', 'square-down'), ('arrow-alt-square-left', 'square-left'), ('arrow-alt-square-right', 'square-right'), ('arrow-alt-square-up', 'square-up'), ('arrow-alt-to-bottom', 'down-to-line'), ('arrow-alt-to-left', 'left-to-line'), ('arrow-alt-to-right', 'right-to-line'), ('arrow-alt-to-top', 'up-to-line'), ('arrow-alt-up', 'up'), ('arrow-circle-down', 'circle-arrow-down'), ('arrow-circle-left', 'circle-arrow-left'), ('arrow-circle-right', 'circle-arrow-right'), ('arrow-circle-up', 'circle-arrow-up'), ('arrow-from-bottom', 'arrow-up-from-line'), ('arrow-from-left', 'arrow-right-from-line'), ('arrow-from-right', 'arrow-left-from-line'), ('arrow-from-top', 'arrow-down-from-line'), ('arrow-square-down', 'square-arrow-down'), ('arrow-square-left', 'square-arrow-left'), ('arrow-square-right', 'square-arrow-right'), ('arrow-square-up', 'square-arrow-up'), ('arrow-to-bottom', 'arrow-down-to-line'), ('arrow-to-left', 'arrow-left-to-line'), ('arrow-to-right', 'arrow-right-to-line'), ('arrow-to-top', 'arrow-up-to-line'), ('arrows', 'arrows-up-down-left-right'), ('arrows-alt', 'up-down-left-right'), ('arrows-alt-h', 'left-right'), ('arrows-alt-v', 'up-down'), ('arrows-h', 'arrows-left-right'), ('arrows-v', 'arrows-up-down'), ('assistive-listening-systems', 'ear-listen'), ('atlas', 'book-atlas'), ('atom-alt', 'atom-simple'), ('backspace', 'delete-left'), ('balance-scale', 'scale-balanced'), ('balance-scale-left', 'scale-unbalanced'), ('balance-scale-right', 'scale-unbalanced-flip'), ('band-aid', 'bandage'), ('barcode-alt', 'rectangle-barcode'), ('baseball-ball', 'baseball'), ('basketball-ball', 'basketball'), ('bed-alt', 'bed-front'), ('beer', 'beer-mug-empty'), ('betamax', 'cassette-betamax'), ('bible', 'book-bible'), ('biking', 'person-biking'), ('biking-mountain', 'person-biking-mountain'), ('birthday-cake', 'cake-candles'), ('blind', 'person-walking-with-cane'), ('book-alt', 'book-blank'), ('book-dead', 'book-skull'), ('book-reader', 'book-open-reader'), ('book-spells', 'book-sparkles'), ('border-style', 'border-top-left'), ('border-style-alt', 'border-bottom-right'), ('box-alt', 'box-taped'), ('box-fragile', 'square-fragile'), ('box-full', 'box-open-full'), ('box-up', 'square-this-way-up'), ('box-usd', 'box-dollar'), ('boxes', 'boxes-stacked'), ('boxes-alt', 'boxes-stacked'), ('brackets', 'brackets-square'), ('broadcast-tower', 'tower-broadcast'), ('burn', 'fire-flame-simple'), ('bus-alt', 'bus-simple'), ('calculator-alt', 'calculator-simple'), ('calendar-alt', 'calendar-days'), ('calendar-edit', 'calendar-pen'), ('calendar-times', 'calendar-xmark'), ('camera-alt', 'camera'), ('camera-home', 'camera-security'), ('car-alt', 'car-rear'), ('car-crash', 'car-burst'), ('car-mechanic', 'car-wrench'), ('caravan-alt', 'caravan-simple'), ('caret-circle-down', 'circle-caret-down'), ('caret-circle-left', 'circle-caret-left'), ('caret-circle-right', 'circle-caret-right'), ('caret-circle-up', 'circle-caret-up'), ('caret-square-down', 'square-caret-down'), ('caret-square-left', 'square-caret-left'), ('caret-square-right', 'square-caret-right'), ('caret-square-up', 'square-caret-up'), ('cctv', 'camera-cctv'), ('chalkboard-teacher', 'chalkboard-user'), ('chart-pie-alt', 'chart-pie-simple'), ('check-circle', 'circle-check'), ('check-square', 'square-check'), ('cheeseburger', 'burger-cheese'), ('chess-bishop-alt', 'chess-bishop-piece'), ('chess-clock-alt', 'chess-clock-flip'), ('chess-king-alt', 'chess-king-piece'), ('chess-knight-alt', 'chess-knight-piece'), ('chess-pawn-alt', 'chess-pawn-piece'), ('chess-queen-alt', 'chess-queen-piece'), ('chess-rook-alt', 'chess-rook-piece'), ('chevron-circle-down', 'circle-chevron-down'), ('chevron-circle-left', 'circle-chevron-left'), ('chevron-circle-right', 'circle-chevron-right'), ('chevron-circle-up', 'circle-chevron-up'), ('chevron-double-down', 'chevrons-down'), ('chevron-double-left', 'chevrons-left'), ('chevron-double-right', 'chevrons-right'), ('chevron-double-up', 'chevrons-up'), ('chevron-square-down', 'square-chevron-down'), ('chevron-square-left', 'square-chevron-left'), ('chevron-square-right', 'square-chevron-right'), ('chevron-square-up', 'square-chevron-up'), ('clinic-medical', 'house-chimney-medical'), ('cloud-download', 'cloud-arrow-down'), ('cloud-download-alt', 'cloud-arrow-down'), ('cloud-upload', 'cloud-arrow-up'), ('cloud-upload-alt', 'cloud-arrow-up'), ('cocktail', 'martini-glass-citrus'), ('coffee', 'mug-saucer'), ('coffee-togo', 'cup-togo'), ('cog', 'gear'), ('cogs', 'gears'), ('columns', 'table-columns'), ('comment-alt', 'message'), ('comment-alt-check', 'message-check'), ('comment-alt-dollar', 'message-dollar'), ('comment-alt-dots', 'message-dots'), ('comment-alt-edit', 'message-pen'), ('comment-alt-exclamation', 'message-exclamation'), ('comment-alt-lines', 'message-lines'), ('comment-alt-medical', 'message-medical'), ('comment-alt-minus', 'message-minus'), ('comment-alt-music', 'message-music'), ('comment-alt-plus', 'message-plus'), ('comment-alt-slash', 'message-slash'), ('comment-alt-smile', 'message-smile'), ('comment-alt-times', 'message-xmark'), ('comment-edit', 'comment-pen'), ('comment-times', 'comment-xmark'), ('comments-alt', 'messages'), ('comments-alt-dollar', 'messages-dollar'), ('compress-alt', 'down-left-and-up-right-to-center'), ('compress-arrows-alt', 'minimize'), ('concierge-bell', 'bell-concierge'), ('construction', 'triangle-person-digging'), ('conveyor-belt-alt', 'conveyor-belt-boxes'), ('cowbell-more', 'cowbell-circle-plus'), ('cricket', 'cricket-bat-ball'), ('crop-alt', 'crop-simple'), ('curling', 'curling-stone'), ('cut', 'scissors'), ('deaf', 'ear-deaf'), ('debug', 'ban-bug'), ('desktop-alt', 'desktop'), ('dewpoint', 'droplet-degree'), ('diagnoses', 'person-dots-from-line'), ('digging', 'person-digging'), ('digital-tachograph', 'tachograph-digital'), ('directions', 'diamond-turn-right'), ('dizzy', 'face-dizzy'), ('dolly-flatbed', 'cart-flatbed'), ('dolly-flatbed-alt', 'cart-flatbed-boxes'), ('dolly-flatbed-empty', 'cart-flatbed-empty'), ('donate', 'circle-dollar-to-slot'), ('dot-circle', 'circle-dot'), ('drafting-compass', 'compass-drafting'), ('drone-alt', 'drone-front'), ('dryer-alt', 'dryer-heat'), ('eclipse-alt', 'moon-over-sun'), ('edit', 'pen-to-square'), ('ellipsis-h', 'ellipsis'), ('ellipsis-h-alt', 'ellipsis-stroke'), ('ellipsis-v', 'ellipsis-vertical'), ('ellipsis-v-alt', 'ellipsis-stroke-vertical'), ('envelope-square', 'square-envelope'), ('exchange', 'arrow-right-arrow-left'), ('exchange-alt', 'right-left'), ('exclamation-circle', 'circle-exclamation'), ('exclamation-square', 'square-exclamation'), ('exclamation-triangle', 'triangle-exclamation'), ('expand-alt', 'up-right-and-down-left-from-center'), ('expand-arrows', 'arrows-maximize'), ('expand-arrows-alt', 'maximize'), ('external-link', 'arrow-up-right-from-square'), ('external-link-alt', 'up-right-from-square'), ('external-link-square', 'square-arrow-up-right'), ('external-link-square-alt', 'square-up-right'), ('eyedropper', 'eye-dropper'), ('fast-backward', 'backward-fast'), ('fast-forward', 'forward-fast'), ('feather-alt', 'feather-pointed'), ('female', 'person-dress'), ('field-hockey', 'field-hockey-stick-ball'), ('fighter-jet', 'jet-fighter'), ('file-alt', 'file-lines'), ('file-archive', 'file-zipper'), ('file-chart-line', 'file-chart-column'), ('file-download', 'file-arrow-down'), ('file-edit', 'file-pen'), ('file-medical-alt', 'file-waveform'), ('file-search', 'file-magnifying-glass'), ('file-times', 'file-xmark'), ('file-upload', 'file-arrow-up'), ('film-alt', 'film-simple'), ('fire-alt', 'fire-flame-curved'), ('first-aid', 'kit-medical'), ('fist-raised', 'hand-fist'), ('flag-alt', 'flag-swallowtail'), ('flame', 'fire-flame'), ('flask-poison', 'flask-round-poison'), ('flask-potion', 'flask-round-potion'), ('flushed', 'face-flushed'), ('fog', 'cloud-fog'), ('folder-download', 'folder-arrow-down'), ('folder-times', 'folder-xmark'), ('folder-upload', 'folder-arrow-up'), ('font-awesome-alt', 'square-font-awesome-stroke'), ('font-awesome-flag', 'font-awesome'), ('font-awesome-logo-full', 'font-awesome'), ('football-ball', 'football'), ('fragile', 'wine-glass-crack'), ('frosty-head', 'snowman-head'), ('frown', 'face-frown'), ('frown-open', 'face-frown-open'), ('funnel-dollar', 'filter-circle-dollar'), ('game-board-alt', 'game-board-simple'), ('gamepad-alt', 'gamepad-modern'), ('glass-champagne', 'champagne-glass'), ('glass-cheers', 'champagne-glasses'), ('glass-martini', 'martini-glass-empty'), ('glass-martini-alt', 'martini-glass'), ('glass-whiskey', 'whiskey-glass'), ('glass-whiskey-rocks', 'whiskey-glass-ice'), ('glasses-alt', 'glasses-round'), ('globe-africa', 'earth-africa'), ('globe-americas', 'earth-americas'), ('globe-asia', 'earth-asia'), ('globe-europe', 'earth-europe'), ('golf-ball', 'golf-ball-tee'), ('grimace', 'face-grimace'), ('grin', 'face-grin'), ('grin-alt', 'face-grin-wide'), ('grin-beam', 'face-grin-beam'), ('grin-beam-sweat', 'face-grin-beam-sweat'), ('grin-hearts', 'face-grin-hearts'), ('grin-squint', 'face-grin-squint'), ('grin-squint-tears', 'face-grin-squint-tears'), ('grin-stars', 'face-grin-stars'), ('grin-tears', 'face-grin-tears'), ('grin-tongue', 'face-grin-tongue'), ('grin-tongue-squint', 'face-grin-tongue-squint'), ('grin-tongue-wink', 'face-grin-tongue-wink'), ('grin-wink', 'face-grin-wink'), ('grip-horizontal', 'grip'), ('h-square', 'square-h'), ('hamburger', 'burger'), ('hand-holding-usd', 'hand-holding-dollar'), ('hand-holding-water', 'hand-holding-droplet'), ('hand-paper', 'hand'), ('hand-receiving', 'hands-holding-diamond'), ('hand-rock', 'hand-back-fist'), ('hands-heart', 'hands-holding-heart'), ('hands-helping', 'handshake-angle'), ('hands-usd', 'hands-holding-dollar'), ('hands-wash', 'hands-bubbles'), ('handshake-alt', 'handshake-simple'), ('handshake-alt-slash', 'handshake-simple-slash'), ('hard-hat', 'helmet-safety'), ('hdd', 'hard-drive'), ('head-vr', 'head-side-goggles'), ('headphones-alt', 'headphones-simple'), ('heart-broken', 'heart-crack'), ('heart-circle', 'circle-heart'), ('heart-rate', 'wave-pulse'), ('heart-square', 'square-heart'), ('heartbeat', 'heart-pulse'), ('hiking', 'person-hiking'), ('history', 'clock-rotate-left'), ('home', 'house'), ('home-alt', 'house'), ('home-heart', 'house-heart'), ('home-lg', 'house-chimney'), ('home-lg-alt', 'house'), ('hospital-alt', 'hospital'), ('hospital-symbol', 'circle-h'), ('hot-tub', 'hot-tub-person'), ('hourglass-half', 'hourglass'), ('house-damage', 'house-chimney-crack'), ('house-leave', 'house-person-leave'), ('house-return', 'house-person-return'), ('hryvnia', 'hryvnia-sign'), ('humidity', 'droplet-percent'), ('icons-alt', 'symbols'), ('id-card-alt', 'id-card-clip'), ('industry-alt', 'industry-windows'), ('info-circle', 'circle-info'), ('info-square', 'square-info'), ('innosoft', '42-group'), ('inventory', 'shelves'), ('journal-whills', 'book-journal-whills'), ('kiss', 'face-kiss'), ('kiss-beam', 'face-kiss-beam'), ('kiss-wink-heart', 'face-kiss-wink-heart'), ('landmark-alt', 'landmark-dome'), ('laptop-house', 'house-laptop'), ('laugh', 'face-laugh'), ('laugh-beam', 'face-laugh-beam'), ('laugh-squint', 'face-laugh-squint'), ('laugh-wink', 'face-laugh-wink'), ('level-down', 'arrow-turn-down'), ('level-down-alt', 'turn-down'), ('level-up', 'arrow-turn-up'), ('level-up-alt', 'turn-up'), ('list-alt', 'rectangle-list'), ('location', 'location-crosshairs'), ('location-circle', 'circle-location-arrow'), ('location-slash', 'location-crosshairs-slash'), ('lock-alt', 'lock-keyhole'), ('lock-open-alt', 'lock-keyhole-open'), ('long-arrow-alt-down', 'down-long'), ('long-arrow-alt-left', 'left-long'), ('long-arrow-alt-right', 'right-long'), ('long-arrow-alt-up', 'up-long'), ('long-arrow-down', 'arrow-down-long'), ('long-arrow-left', 'arrow-left-long'), ('long-arrow-right', 'arrow-right-long'), ('long-arrow-up', 'arrow-up-long'), ('low-vision', 'eye-low-vision'), ('luchador', 'luchador-mask'), ('luggage-cart', 'cart-flatbed-suitcase'), ('magic', 'wand-magic'), ('mail-bulk', 'envelopes-bulk'), ('male', 'person'), ('map-marked', 'map-location'), ('map-marked-alt', 'map-location-dot'), ('map-marker', 'location-pin'), ('map-marker-alt', 'location-dot'), ('map-marker-alt-slash', 'location-dot-slash'), ('map-marker-check', 'location-check'), ('map-marker-edit', 'location-pen'), ('map-marker-exclamation', 'location-exclamation'), ('map-marker-minus', 'location-minus'), ('map-marker-plus', 'location-plus'), ('map-marker-question', 'location-question'), ('map-marker-slash', 'location-pin-slash'), ('map-marker-smile', 'location-smile'), ('map-marker-times', 'location-xmark'), ('map-signs', 'signs-post'), ('mars-stroke-h', 'mars-stroke-right'), ('mars-stroke-v', 'mars-stroke-up'), ('medium-m', 'medium'), ('medkit', 'suitcase-medical'), ('meh', 'face-meh'), ('meh-blank', 'face-meh-blank'), ('meh-rolling-eyes', 'face-rolling-eyes'), ('microphone-alt', 'microphone-lines'), ('microphone-alt-slash', 'microphone-lines-slash'), ('mind-share', 'brain-arrow-curved-right'), ('minus-circle', 'circle-minus'), ('minus-hexagon', 'hexagon-minus'), ('minus-octagon', 'octagon-minus'), ('minus-square', 'square-minus'), ('mobile-alt', 'mobile-screen-button'), ('mobile-android', 'mobile'), ('mobile-android-alt', 'mobile-screen'), ('money-bill-alt', 'money-bill-1'), ('money-bill-wave-alt', 'money-bill-1-wave'), ('money-check-alt', 'money-check-dollar'), ('money-check-edit', 'money-check-pen'), ('money-check-edit-alt', 'money-check-dollar-pen'), ('monitor-heart-rate', 'monitor-waveform'), ('mouse', 'computer-mouse'), ('mouse-alt', 'computer-mouse-scrollwheel'), ('mouse-pointer', 'arrow-pointer'), ('music-alt', 'music-note'), ('music-alt-slash', 'music-note-slash'), ('oil-temp', 'oil-temperature'), ('page-break', 'file-dashed-line'), ('paint-brush', 'paintbrush'), ('paint-brush-alt', 'paintbrush-fine'), ('paint-brush-fine', 'paintbrush-fine'), ('pallet-alt', 'pallet-boxes'), ('paragraph-rtl', 'paragraph-left'), ('parking', 'square-parking'), ('parking-circle', 'circle-parking'), ('parking-circle-slash', 'ban-parking'), ('parking-slash', 'square-parking-slash'), ('pastafarianism', 'spaghetti-monster-flying'), ('pause-circle', 'circle-pause'), ('paw-alt', 'paw-simple'), ('pen-alt', 'pen-clip'), ('pen-square', 'square-pen'), ('pencil-alt', 'pencil'), ('pencil-paintbrush', 'pen-paintbrush'), ('pencil-ruler', 'pen-ruler'), ('pennant', 'flag-pennant'), ('people-arrows', 'people-arrows-left-right'), ('people-carry', 'people-carry-box'), ('percentage', 'percent'), ('person-carry', 'person-carry-box'), ('phone-alt', 'phone-flip'), ('phone-laptop', 'laptop-mobile'), ('phone-square', 'square-phone'), ('phone-square-alt', 'square-phone-flip'), ('photo-video', 'photo-film'), ('plane-alt', 'plane-engines'), ('play-circle', 'circle-play'), ('plus-circle', 'circle-plus'), ('plus-hexagon', 'hexagon-plus'), ('plus-octagon', 'octagon-plus'), ('plus-square', 'square-plus'), ('poll', 'square-poll-vertical'), ('poll-h', 'square-poll-horizontal'), ('portal-enter', 'person-to-portal'), ('portal-exit', 'person-from-portal'), ('portrait', 'image-portrait'), ('pound-sign', 'sterling-sign'), ('pray', 'person-praying'), ('praying-hands', 'hands-praying'), ('prescription-bottle-alt', 'prescription-bottle-medical'), ('presentation', 'presentation-screen'), ('print-search', 'print-magnifying-glass'), ('procedures', 'bed-pulse'), ('project-diagram', 'diagram-project'), ('question-circle', 'circle-question'), ('question-square', 'square-question'), ('quran', 'book-quran'), ('rabbit-fast', 'rabbit-running'), ('radiation-alt', 'circle-radiation'), ('radio-alt', 'radio-tuner'), ('random', 'shuffle'), ('rectangle-landscape', 'rectangle'), ('rectangle-portrait', 'rectangle-vertical'), ('redo', 'arrow-rotate-right'), ('redo-alt', 'rotate-right'), ('remove-format', 'text-slash'), ('repeat-1-alt', 'arrows-repeat-1'), ('repeat-alt', 'arrows-repeat'), ('retweet-alt', 'arrows-retweet'), ('rss-square', 'square-rss'), ('running', 'person-running'), ('sad-cry', 'face-sad-cry'), ('sad-tear', 'face-sad-tear'), ('save', 'floppy-disk'), ('sax-hot', 'saxophone-fire'), ('scalpel-path', 'scalpel-line-dashed'), ('scanner-image', 'scanner'), ('search', 'magnifying-glass'), ('search-dollar', 'magnifying-glass-dollar'), ('search-location', 'magnifying-glass-location'), ('search-minus', 'magnifying-glass-minus'), ('search-plus', 'magnifying-glass-plus'), ('sensor-alert', 'sensor-triangle-exclamation'), ('sensor-smoke', 'sensor-cloud'), ('share-alt', 'share-nodes'), ('share-alt-square', 'square-share-nodes'), ('share-square', 'share-from-square'), ('shield-alt', 'shield-halved'), ('shipping-fast', 'truck-fast'), ('shipping-timed', 'truck-clock'), ('shopping-bag', 'bag-shopping'), ('shopping-basket', 'basket-shopping'), ('shopping-cart', 'cart-shopping'), ('shuttle-van', 'van-shuttle'), ('sign', 'sign-hanging'), ('sign-in', 'arrow-right-to-bracket'), ('sign-in-alt', 'right-to-bracket'), ('sign-language', 'hands'), ('sign-out', 'arrow-right-from-bracket'), ('sign-out-alt', 'right-from-bracket'), ('signal-1', 'signal-weak'), ('signal-2', 'signal-fair'), ('signal-3', 'signal-good'), ('signal-4', 'signal-strong'), ('signal-alt', 'signal-bars'), ('signal-alt-1', 'signal-bars-weak'), ('signal-alt-2', 'signal-bars-fair'), ('signal-alt-3', 'signal-bars-good'), ('signal-alt-slash', 'signal-bars-slash'), ('skating', 'person-skating'), ('ski-jump', 'person-ski-jumping'), ('ski-lift', 'person-ski-lift'), ('skiing', 'person-skiing'), ('skiing-nordic', 'person-skiing-nordic'), ('slack-hash', 'slack'), ('sledding', 'person-sledding'), ('sliders-h', 'sliders'), ('sliders-h-square', 'square-sliders'), ('sliders-v', 'sliders-up'), ('sliders-v-square', 'square-sliders-vertical'), ('smile', 'face-smile'), ('smile-beam', 'face-smile-beam'), ('smile-plus', 'face-smile-plus'), ('smile-wink', 'face-smile-wink'), ('smoking-ban', 'ban-smoking'), ('sms', 'comment-sms'), ('snapchat-ghost', 'snapchat'), ('snowboarding', 'person-snowboarding'), ('snowmobile', 'person-snowmobiling'), ('sort-alpha-down', 'arrow-down-a-z'), ('sort-alpha-down-alt', 'arrow-down-z-a'), ('sort-alpha-up', 'arrow-up-a-z'), ('sort-alpha-up-alt', 'arrow-up-z-a'), ('sort-alt', 'arrow-down-arrow-up'), ('sort-amount-down', 'arrow-down-wide-short'), ('sort-amount-down-alt', 'arrow-down-short-wide'), ('sort-amount-up', 'arrow-up-wide-short'), ('sort-amount-up-alt', 'arrow-up-short-wide'), ('sort-circle', 'circle-sort'), ('sort-circle-down', 'circle-sort-down'), ('sort-circle-up', 'circle-sort-up'), ('sort-numeric-down', 'arrow-down-1-9'), ('sort-numeric-down-alt', 'arrow-down-9-1'), ('sort-numeric-up', 'arrow-up-1-9'), ('sort-numeric-up-alt', 'arrow-up-9-1'), ('sort-shapes-down', 'arrow-down-triangle-square'), ('sort-shapes-down-alt', 'arrow-down-square-triangle'), ('sort-shapes-up', 'arrow-up-triangle-square'), ('sort-shapes-up-alt', 'arrow-up-square-triangle'), ('sort-size-down', 'arrow-down-big-small'), ('sort-size-down-alt', 'arrow-down-small-big'), ('sort-size-up', 'arrow-up-big-small'), ('sort-size-up-alt', 'arrow-up-small-big'), ('soup', 'bowl-hot'), ('space-shuttle', 'shuttle-space'), ('space-station-moon-alt', 'space-station-moon-construction'), ('square-root-alt', 'square-root-variable'), ('star-half-alt', 'star-half-stroke'), ('starfighter-alt', 'starfighter-twin-ion-engine'), ('step-backward', 'backward-step'), ('step-forward', 'forward-step'), ('sticky-note', 'note-sticky'), ('stop-circle', 'circle-stop'), ('store-alt', 'shop'), ('store-alt-slash', 'shop-slash'), ('stream', 'bars-staggered'), ('subway', 'train-subway'), ('surprise', 'face-surprise'), ('swimmer', 'person-swimming'), ('swimming-pool', 'water-ladder'), ('sync', 'arrows-rotate'), ('sync-alt', 'rotate'), ('table-tennis', 'table-tennis-paddle-ball'), ('tablet-alt', 'tablet-screen-button'), ('tablet-android', 'tablet'), ('tablet-android-alt', 'tablet-screen'), ('tachometer', 'gauge-simple'), ('tachometer-alt', 'gauge'), ('tachometer-alt-average', 'gauge-med'), ('tachometer-alt-fast', 'gauge'), ('tachometer-alt-fastest', 'gauge-max'), ('tachometer-alt-slow', 'gauge-low'), ('tachometer-alt-slowest', 'gauge-min'), ('tachometer-average', 'gauge-simple-med'), ('tachometer-fast', 'gauge-simple'), ('tachometer-fastest', 'gauge-simple-max'), ('tachometer-slow', 'gauge-simple-low'), ('tachometer-slowest', 'gauge-simple-min'), ('tanakh', 'book-tanakh'), ('tasks', 'list-check'), ('tasks-alt', 'bars-progress'), ('telegram-plane', 'telegram'), ('temperature-down', 'temperature-arrow-down'), ('temperature-frigid', 'temperature-snow'), ('temperature-hot', 'temperature-sun'), ('temperature-up', 'temperature-arrow-up'), ('tenge', 'tenge-sign'), ('th', 'table-cells'), ('th-large', 'table-cells-large'), ('th-list', 'table-list'), ('theater-masks', 'masks-theater'), ('thermometer-empty', 'temperature-empty'), ('thermometer-full', 'temperature-full'), ('thermometer-half', 'temperature-half'), ('thermometer-quarter', 'temperature-quarter'), ('thermometer-three-quarters', 'temperature-three-quarters'), ('thumb-tack', 'thumbtack'), ('thunderstorm', 'cloud-bolt'), ('thunderstorm-moon', 'cloud-bolt-moon'), ('thunderstorm-sun', 'cloud-bolt-sun'), ('ticket-alt', 'ticket-simple'), ('times', 'xmark'), ('times-circle', 'circle-xmark'), ('times-hexagon', 'hexagon-xmark'), ('times-octagon', 'octagon-xmark'), ('times-square', 'square-xmark'), ('tint', 'droplet'), ('tint-slash', 'droplet-slash'), ('tired', 'face-tired'), ('toilet-paper-alt', 'toilet-paper-blank'), ('tombstone-alt', 'tombstone-blank'), ('tools', 'screwdriver-wrench'), ('torah', 'scroll-torah'), ('tram', 'train-tram'), ('transgender-alt', 'transgender'), ('trash-alt', 'trash-can'), ('trash-restore', 'trash-arrow-up'), ('trash-restore-alt', 'trash-can-arrow-up'), ('trash-undo-alt', 'trash-can-undo'), ('tree-alt', 'tree-deciduous'), ('triangle-music', 'triangle-instrument'), ('trophy-alt', 'trophy-star'), ('truck-couch', 'truck-ramp-couch'), ('truck-loading', 'truck-ramp-box'), ('tshirt', 'shirt'), ('tv-alt', 'tv'), ('undo', 'arrow-rotate-left'), ('undo-alt', 'rotate-left'), ('university', 'building-columns'), ('unlink', 'link-slash'), ('unlock-alt', 'unlock-keyhole'), ('usd-circle', 'circle-dollar'), ('usd-square', 'square-dollar'), ('user-alt', 'user-large'), ('user-alt-slash', 'user-large-slash'), ('user-chart', 'chart-user'), ('user-circle', 'circle-user'), ('user-cog', 'user-gear'), ('user-edit', 'user-pen'), ('user-friends', 'user-group'), ('user-hard-hat', 'user-helmet-safety'), ('user-md', 'user-doctor'), ('user-md-chat', 'user-doctor-message'), ('user-times', 'user-xmark'), ('users-class', 'screen-users'), ('users-cog', 'users-gear'), ('users-crown', 'user-group-crown'), ('utensil-fork', 'fork'), ('utensil-knife', 'knife'), ('utensil-spoon', 'spoon'), ('utensils-alt', 'fork-knife'), ('vhs', 'cassette-vhs'), ('volleyball-ball', 'volleyball'), ('volume-down', 'volume-low'), ('volume-mute', 'volume-xmark'), ('volume-up', 'volume-high'), ('vote-nay', 'xmark-to-slot'), ('vote-yea', 'check-to-slot'), ('walking', 'person-walking'), ('warehouse-alt', 'warehouse-full'), ('washer', 'washing-machine'), ('water-lower', 'water-arrow-down'), ('water-rise', 'water-arrow-up'), ('waveform-path', 'waveform-lines'), ('webcam', 'camera-web'), ('webcam-slash', 'camera-web-slash'), ('weight', 'weight-scale'), ('wifi-1', 'wifi-weak'), ('wifi-2', 'wifi-fair'), ('window-alt', 'window-flip'), ('window-close', 'rectangle-xmark'), ('wine-glass-alt', 'wine-glass-empty')) AS mapping(from_icon, to_icon)\n)\nUPDATE sidebar_urls\nSET icon =\n  CASE\n    WHEN icon LIKE 'fab-%' THEN CONCAT('fab-', remaps.to_icon)\n    WHEN icon LIKE 'far-%' THEN CONCAT('far-', remaps.to_icon)\n    WHEN icon LIKE 'fab fa-%' THEN CONCAT('fab-', remaps.to_icon)\n    WHEN icon LIKE 'far fa-%' THEN CONCAT('far-', remaps.to_icon)\n    ELSE remaps.to_icon\n  END\nFROM remaps\nWHERE icon = remaps.from_icon\n  OR icon = CONCAT('fa-', remaps.from_icon)\n  OR icon = CONCAT('far-', remaps.from_icon)\n  OR icon = CONCAT('fab-', remaps.from_icon)\n  OR icon = CONCAT('far fa-', remaps.from_icon)\n  OR icon = CONCAT('fab fa-', remaps.from_icon)\n  OR icon = CONCAT('fas fa-', remaps.from_icon);\n")
   -> 0.0075s
-- execute("UPDATE sidebar_urls\nSET icon =\nCASE\n  WHEN icon LIKE 'fas fa-%' THEN SUBSTRING(icon FROM 8)\n  WHEN icon LIKE 'far fa-%' THEN CONCAT('far-', SUBSTRING(icon FROM 8))\n  WHEN icon LIKE 'fab fa-%' THEN CONCAT('fab-', SUBSTRING(icon FROM 8))\n  WHEN icon LIKE 'fa-%' THEN SUBSTRING(icon FROM 4)\n  ELSE icon\nEND\nWHERE icon LIKE 'fa-%'\n  OR icon LIKE 'far fa-%'\n  OR icon LIKE 'fab fa-%'\n  OR icon LIKE 'fas fa-%';\n")
   -> 0.0003s
-- execute("WITH remaps AS (\n  SELECT from_icon, to_icon FROM (VALUES ('adjust', 'circle-half-stroke'), ('air-freshener', 'spray-can-sparkles'), ('alien-monster', 'alien-8bit'), ('allergies', 'hand-dots'), ('ambulance', 'truck-medical'), ('american-sign-language-interpreting', 'hands-asl-interpreting'), ('analytics', 'chart-mixed'), ('angle-double-down', 'angles-down'), ('angle-double-left', 'angles-left'), ('angle-double-right', 'angles-right'), ('angle-double-up', 'angles-up'), ('angry', 'face-angry'), ('apple-alt', 'apple-whole'), ('apple-crate', 'crate-apple'), ('archive', 'box-archive'), ('arrow-alt-circle-down', 'circle-down'), ('arrow-alt-circle-left', 'circle-left'), ('arrow-alt-circle-right', 'circle-right'), ('arrow-alt-circle-up', 'circle-up'), ('arrow-alt-down', 'down'), ('arrow-alt-from-bottom', 'up-from-line'), ('arrow-alt-from-left', 'right-from-line'), ('arrow-alt-from-right', 'left-from-line'), ('arrow-alt-from-top', 'down-from-line'), ('arrow-alt-left', 'left'), ('arrow-alt-right', 'right'), ('arrow-alt-square-down', 'square-down'), ('arrow-alt-square-left', 'square-left'), ('arrow-alt-square-right', 'square-right'), ('arrow-alt-square-up', 'square-up'), ('arrow-alt-to-bottom', 'down-to-line'), ('arrow-alt-to-left', 'left-to-line'), ('arrow-alt-to-right', 'right-to-line'), ('arrow-alt-to-top', 'up-to-line'), ('arrow-alt-up', 'up'), ('arrow-circle-down', 'circle-arrow-down'), ('arrow-circle-left', 'circle-arrow-left'), ('arrow-circle-right', 'circle-arrow-right'), ('arrow-circle-up', 'circle-arrow-up'), ('arrow-from-bottom', 'arrow-up-from-line'), ('arrow-from-left', 'arrow-right-from-line'), ('arrow-from-right', 'arrow-left-from-line'), ('arrow-from-top', 'arrow-down-from-line'), ('arrow-square-down', 'square-arrow-down'), ('arrow-square-left', 'square-arrow-left'), ('arrow-square-right', 'square-arrow-right'), ('arrow-square-up', 'square-arrow-up'), ('arrow-to-bottom', 'arrow-down-to-line'), ('arrow-to-left', 'arrow-left-to-line'), ('arrow-to-right', 'arrow-right-to-line'), ('arrow-to-top', 'arrow-up-to-line'), ('arrows', 'arrows-up-down-left-right'), ('arrows-alt', 'up-down-left-right'), ('arrows-alt-h', 'left-right'), ('arrows-alt-v', 'up-down'), ('arrows-h', 'arrows-left-right'), ('arrows-v', 'arrows-up-down'), ('assistive-listening-systems', 'ear-listen'), ('atlas', 'book-atlas'), ('atom-alt', 'atom-simple'), ('backspace', 'delete-left'), ('balance-scale', 'scale-balanced'), ('balance-scale-left', 'scale-unbalanced'), ('balance-scale-right', 'scale-unbalanced-flip'), ('band-aid', 'bandage'), ('barcode-alt', 'rectangle-barcode'), ('baseball-ball', 'baseball'), ('basketball-ball', 'basketball'), ('bed-alt', 'bed-front'), ('beer', 'beer-mug-empty'), ('betamax', 'cassette-betamax'), ('bible', 'book-bible'), ('biking', 'person-biking'), ('biking-mountain', 'person-biking-mountain'), ('birthday-cake', 'cake-candles'), ('blind', 'person-walking-with-cane'), ('book-alt', 'book-blank'), ('book-dead', 'book-skull'), ('book-reader', 'book-open-reader'), ('book-spells', 'book-sparkles'), ('border-style', 'border-top-left'), ('border-style-alt', 'border-bottom-right'), ('box-alt', 'box-taped'), ('box-fragile', 'square-fragile'), ('box-full', 'box-open-full'), ('box-up', 'square-this-way-up'), ('box-usd', 'box-dollar'), ('boxes', 'boxes-stacked'), ('boxes-alt', 'boxes-stacked'), ('brackets', 'brackets-square'), ('broadcast-tower', 'tower-broadcast'), ('burn', 'fire-flame-simple'), ('bus-alt', 'bus-simple'), ('calculator-alt', 'calculator-simple'), ('calendar-alt', 'calendar-days'), ('calendar-edit', 'calendar-pen'), ('calendar-times', 'calendar-xmark'), ('camera-alt', 'camera'), ('camera-home', 'camera-security'), ('car-alt', 'car-rear'), ('car-crash', 'car-burst'), ('car-mechanic', 'car-wrench'), ('caravan-alt', 'caravan-simple'), ('caret-circle-down', 'circle-caret-down'), ('caret-circle-left', 'circle-caret-left'), ('caret-circle-right', 'circle-caret-right'), ('caret-circle-up', 'circle-caret-up'), ('caret-square-down', 'square-caret-down'), ('caret-square-left', 'square-caret-left'), ('caret-square-right', 'square-caret-right'), ('caret-square-up', 'square-caret-up'), ('cctv', 'camera-cctv'), ('chalkboard-teacher', 'chalkboard-user'), ('chart-pie-alt', 'chart-pie-simple'), ('check-circle', 'circle-check'), ('check-square', 'square-check'), ('cheeseburger', 'burger-cheese'), ('chess-bishop-alt', 'chess-bishop-piece'), ('chess-clock-alt', 'chess-clock-flip'), ('chess-king-alt', 'chess-king-piece'), ('chess-knight-alt', 'chess-knight-piece'), ('chess-pawn-alt', 'chess-pawn-piece'), ('chess-queen-alt', 'chess-queen-piece'), ('chess-rook-alt', 'chess-rook-piece'), ('chevron-circle-down', 'circle-chevron-down'), ('chevron-circle-left', 'circle-chevron-left'), ('chevron-circle-right', 'circle-chevron-right'), ('chevron-circle-up', 'circle-chevron-up'), ('chevron-double-down', 'chevrons-down'), ('chevron-double-left', 'chevrons-left'), ('chevron-double-right', 'chevrons-right'), ('chevron-double-up', 'chevrons-up'), ('chevron-square-down', 'square-chevron-down'), ('chevron-square-left', 'square-chevron-left'), ('chevron-square-right', 'square-chevron-right'), ('chevron-square-up', 'square-chevron-up'), ('clinic-medical', 'house-chimney-medical'), ('cloud-download', 'cloud-arrow-down'), ('cloud-download-alt', 'cloud-arrow-down'), ('cloud-upload', 'cloud-arrow-up'), ('cloud-upload-alt', 'cloud-arrow-up'), ('cocktail', 'martini-glass-citrus'), ('coffee', 'mug-saucer'), ('coffee-togo', 'cup-togo'), ('cog', 'gear'), ('cogs', 'gears'), ('columns', 'table-columns'), ('comment-alt', 'message'), ('comment-alt-check', 'message-check'), ('comment-alt-dollar', 'message-dollar'), ('comment-alt-dots', 'message-dots'), ('comment-alt-edit', 'message-pen'), ('comment-alt-exclamation', 'message-exclamation'), ('comment-alt-lines', 'message-lines'), ('comment-alt-medical', 'message-medical'), ('comment-alt-minus', 'message-minus'), ('comment-alt-music', 'message-music'), ('comment-alt-plus', 'message-plus'), ('comment-alt-slash', 'message-slash'), ('comment-alt-smile', 'message-smile'), ('comment-alt-times', 'message-xmark'), ('comment-edit', 'comment-pen'), ('comment-times', 'comment-xmark'), ('comments-alt', 'messages'), ('comments-alt-dollar', 'messages-dollar'), ('compress-alt', 'down-left-and-up-right-to-center'), ('compress-arrows-alt', 'minimize'), ('concierge-bell', 'bell-concierge'), ('construction', 'triangle-person-digging'), ('conveyor-belt-alt', 'conveyor-belt-boxes'), ('cowbell-more', 'cowbell-circle-plus'), ('cricket', 'cricket-bat-ball'), ('crop-alt', 'crop-simple'), ('curling', 'curling-stone'), ('cut', 'scissors'), ('deaf', 'ear-deaf'), ('debug', 'ban-bug'), ('desktop-alt', 'desktop'), ('dewpoint', 'droplet-degree'), ('diagnoses', 'person-dots-from-line'), ('digging', 'person-digging'), ('digital-tachograph', 'tachograph-digital'), ('directions', 'diamond-turn-right'), ('dizzy', 'face-dizzy'), ('dolly-flatbed', 'cart-flatbed'), ('dolly-flatbed-alt', 'cart-flatbed-boxes'), ('dolly-flatbed-empty', 'cart-flatbed-empty'), ('donate', 'circle-dollar-to-slot'), ('dot-circle', 'circle-dot'), ('drafting-compass', 'compass-drafting'), ('drone-alt', 'drone-front'), ('dryer-alt', 'dryer-heat'), ('eclipse-alt', 'moon-over-sun'), ('edit', 'pen-to-square'), ('ellipsis-h', 'ellipsis'), ('ellipsis-h-alt', 'ellipsis-stroke'), ('ellipsis-v', 'ellipsis-vertical'), ('ellipsis-v-alt', 'ellipsis-stroke-vertical'), ('envelope-square', 'square-envelope'), ('exchange', 'arrow-right-arrow-left'), ('exchange-alt', 'right-left'), ('exclamation-circle', 'circle-exclamation'), ('exclamation-square', 'square-exclamation'), ('exclamation-triangle', 'triangle-exclamation'), ('expand-alt', 'up-right-and-down-left-from-center'), ('expand-arrows', 'arrows-maximize'), ('expand-arrows-alt', 'maximize'), ('external-link', 'arrow-up-right-from-square'), ('external-link-alt', 'up-right-from-square'), ('external-link-square', 'square-arrow-up-right'), ('external-link-square-alt', 'square-up-right'), ('eyedropper', 'eye-dropper'), ('fast-backward', 'backward-fast'), ('fast-forward', 'forward-fast'), ('feather-alt', 'feather-pointed'), ('female', 'person-dress'), ('field-hockey', 'field-hockey-stick-ball'), ('fighter-jet', 'jet-fighter'), ('file-alt', 'file-lines'), ('file-archive', 'file-zipper'), ('file-chart-line', 'file-chart-column'), ('file-download', 'file-arrow-down'), ('file-edit', 'file-pen'), ('file-medical-alt', 'file-waveform'), ('file-search', 'file-magnifying-glass'), ('file-times', 'file-xmark'), ('file-upload', 'file-arrow-up'), ('film-alt', 'film-simple'), ('fire-alt', 'fire-flame-curved'), ('first-aid', 'kit-medical'), ('fist-raised', 'hand-fist'), ('flag-alt', 'flag-swallowtail'), ('flame', 'fire-flame'), ('flask-poison', 'flask-round-poison'), ('flask-potion', 'flask-round-potion'), ('flushed', 'face-flushed'), ('fog', 'cloud-fog'), ('folder-download', 'folder-arrow-down'), ('folder-times', 'folder-xmark'), ('folder-upload', 'folder-arrow-up'), ('font-awesome-alt', 'square-font-awesome-stroke'), ('font-awesome-flag', 'font-awesome'), ('font-awesome-logo-full', 'font-awesome'), ('football-ball', 'football'), ('fragile', 'wine-glass-crack'), ('frosty-head', 'snowman-head'), ('frown', 'face-frown'), ('frown-open', 'face-frown-open'), ('funnel-dollar', 'filter-circle-dollar'), ('game-board-alt', 'game-board-simple'), ('gamepad-alt', 'gamepad-modern'), ('glass-champagne', 'champagne-glass'), ('glass-cheers', 'champagne-glasses'), ('glass-martini', 'martini-glass-empty'), ('glass-martini-alt', 'martini-glass'), ('glass-whiskey', 'whiskey-glass'), ('glass-whiskey-rocks', 'whiskey-glass-ice'), ('glasses-alt', 'glasses-round'), ('globe-africa', 'earth-africa'), ('globe-americas', 'earth-americas'), ('globe-asia', 'earth-asia'), ('globe-europe', 'earth-europe'), ('golf-ball', 'golf-ball-tee'), ('grimace', 'face-grimace'), ('grin', 'face-grin'), ('grin-alt', 'face-grin-wide'), ('grin-beam', 'face-grin-beam'), ('grin-beam-sweat', 'face-grin-beam-sweat'), ('grin-hearts', 'face-grin-hearts'), ('grin-squint', 'face-grin-squint'), ('grin-squint-tears', 'face-grin-squint-tears'), ('grin-stars', 'face-grin-stars'), ('grin-tears', 'face-grin-tears'), ('grin-tongue', 'face-grin-tongue'), ('grin-tongue-squint', 'face-grin-tongue-squint'), ('grin-tongue-wink', 'face-grin-tongue-wink'), ('grin-wink', 'face-grin-wink'), ('grip-horizontal', 'grip'), ('h-square', 'square-h'), ('hamburger', 'burger'), ('hand-holding-usd', 'hand-holding-dollar'), ('hand-holding-water', 'hand-holding-droplet'), ('hand-paper', 'hand'), ('hand-receiving', 'hands-holding-diamond'), ('hand-rock', 'hand-back-fist'), ('hands-heart', 'hands-holding-heart'), ('hands-helping', 'handshake-angle'), ('hands-usd', 'hands-holding-dollar'), ('hands-wash', 'hands-bubbles'), ('handshake-alt', 'handshake-simple'), ('handshake-alt-slash', 'handshake-simple-slash'), ('hard-hat', 'helmet-safety'), ('hdd', 'hard-drive'), ('head-vr', 'head-side-goggles'), ('headphones-alt', 'headphones-simple'), ('heart-broken', 'heart-crack'), ('heart-circle', 'circle-heart'), ('heart-rate', 'wave-pulse'), ('heart-square', 'square-heart'), ('heartbeat', 'heart-pulse'), ('hiking', 'person-hiking'), ('history', 'clock-rotate-left'), ('home', 'house'), ('home-alt', 'house'), ('home-heart', 'house-heart'), ('home-lg', 'house-chimney'), ('home-lg-alt', 'house'), ('hospital-alt', 'hospital'), ('hospital-symbol', 'circle-h'), ('hot-tub', 'hot-tub-person'), ('hourglass-half', 'hourglass'), ('house-damage', 'house-chimney-crack'), ('house-leave', 'house-person-leave'), ('house-return', 'house-person-return'), ('hryvnia', 'hryvnia-sign'), ('humidity', 'droplet-percent'), ('icons-alt', 'symbols'), ('id-card-alt', 'id-card-clip'), ('industry-alt', 'industry-windows'), ('info-circle', 'circle-info'), ('info-square', 'square-info'), ('innosoft', '42-group'), ('inventory', 'shelves'), ('journal-whills', 'book-journal-whills'), ('kiss', 'face-kiss'), ('kiss-beam', 'face-kiss-beam'), ('kiss-wink-heart', 'face-kiss-wink-heart'), ('landmark-alt', 'landmark-dome'), ('laptop-house', 'house-laptop'), ('laugh', 'face-laugh'), ('laugh-beam', 'face-laugh-beam'), ('laugh-squint', 'face-laugh-squint'), ('laugh-wink', 'face-laugh-wink'), ('level-down', 'arrow-turn-down'), ('level-down-alt', 'turn-down'), ('level-up', 'arrow-turn-up'), ('level-up-alt', 'turn-up'), ('list-alt', 'rectangle-list'), ('location', 'location-crosshairs'), ('location-circle', 'circle-location-arrow'), ('location-slash', 'location-crosshairs-slash'), ('lock-alt', 'lock-keyhole'), ('lock-open-alt', 'lock-keyhole-open'), ('long-arrow-alt-down', 'down-long'), ('long-arrow-alt-left', 'left-long'), ('long-arrow-alt-right', 'right-long'), ('long-arrow-alt-up', 'up-long'), ('long-arrow-down', 'arrow-down-long'), ('long-arrow-left', 'arrow-left-long'), ('long-arrow-right', 'arrow-right-long'), ('long-arrow-up', 'arrow-up-long'), ('low-vision', 'eye-low-vision'), ('luchador', 'luchador-mask'), ('luggage-cart', 'cart-flatbed-suitcase'), ('magic', 'wand-magic'), ('mail-bulk', 'envelopes-bulk'), ('male', 'person'), ('map-marked', 'map-location'), ('map-marked-alt', 'map-location-dot'), ('map-marker', 'location-pin'), ('map-marker-alt', 'location-dot'), ('map-marker-alt-slash', 'location-dot-slash'), ('map-marker-check', 'location-check'), ('map-marker-edit', 'location-pen'), ('map-marker-exclamation', 'location-exclamation'), ('map-marker-minus', 'location-minus'), ('map-marker-plus', 'location-plus'), ('map-marker-question', 'location-question'), ('map-marker-slash', 'location-pin-slash'), ('map-marker-smile', 'location-smile'), ('map-marker-times', 'location-xmark'), ('map-signs', 'signs-post'), ('mars-stroke-h', 'mars-stroke-right'), ('mars-stroke-v', 'mars-stroke-up'), ('medium-m', 'medium'), ('medkit', 'suitcase-medical'), ('meh', 'face-meh'), ('meh-blank', 'face-meh-blank'), ('meh-rolling-eyes', 'face-rolling-eyes'), ('microphone-alt', 'microphone-lines'), ('microphone-alt-slash', 'microphone-lines-slash'), ('mind-share', 'brain-arrow-curved-right'), ('minus-circle', 'circle-minus'), ('minus-hexagon', 'hexagon-minus'), ('minus-octagon', 'octagon-minus'), ('minus-square', 'square-minus'), ('mobile-alt', 'mobile-screen-button'), ('mobile-android', 'mobile'), ('mobile-android-alt', 'mobile-screen'), ('money-bill-alt', 'money-bill-1'), ('money-bill-wave-alt', 'money-bill-1-wave'), ('money-check-alt', 'money-check-dollar'), ('money-check-edit', 'money-check-pen'), ('money-check-edit-alt', 'money-check-dollar-pen'), ('monitor-heart-rate', 'monitor-waveform'), ('mouse', 'computer-mouse'), ('mouse-alt', 'computer-mouse-scrollwheel'), ('mouse-pointer', 'arrow-pointer'), ('music-alt', 'music-note'), ('music-alt-slash', 'music-note-slash'), ('oil-temp', 'oil-temperature'), ('page-break', 'file-dashed-line'), ('paint-brush', 'paintbrush'), ('paint-brush-alt', 'paintbrush-fine'), ('paint-brush-fine', 'paintbrush-fine'), ('pallet-alt', 'pallet-boxes'), ('paragraph-rtl', 'paragraph-left'), ('parking', 'square-parking'), ('parking-circle', 'circle-parking'), ('parking-circle-slash', 'ban-parking'), ('parking-slash', 'square-parking-slash'), ('pastafarianism', 'spaghetti-monster-flying'), ('pause-circle', 'circle-pause'), ('paw-alt', 'paw-simple'), ('pen-alt', 'pen-clip'), ('pen-square', 'square-pen'), ('pencil-alt', 'pencil'), ('pencil-paintbrush', 'pen-paintbrush'), ('pencil-ruler', 'pen-ruler'), ('pennant', 'flag-pennant'), ('people-arrows', 'people-arrows-left-right'), ('people-carry', 'people-carry-box'), ('percentage', 'percent'), ('person-carry', 'person-carry-box'), ('phone-alt', 'phone-flip'), ('phone-laptop', 'laptop-mobile'), ('phone-square', 'square-phone'), ('phone-square-alt', 'square-phone-flip'), ('photo-video', 'photo-film'), ('plane-alt', 'plane-engines'), ('play-circle', 'circle-play'), ('plus-circle', 'circle-plus'), ('plus-hexagon', 'hexagon-plus'), ('plus-octagon', 'octagon-plus'), ('plus-square', 'square-plus'), ('poll', 'square-poll-vertical'), ('poll-h', 'square-poll-horizontal'), ('portal-enter', 'person-to-portal'), ('portal-exit', 'person-from-portal'), ('portrait', 'image-portrait'), ('pound-sign', 'sterling-sign'), ('pray', 'person-praying'), ('praying-hands', 'hands-praying'), ('prescription-bottle-alt', 'prescription-bottle-medical'), ('presentation', 'presentation-screen'), ('print-search', 'print-magnifying-glass'), ('procedures', 'bed-pulse'), ('project-diagram', 'diagram-project'), ('question-circle', 'circle-question'), ('question-square', 'square-question'), ('quran', 'book-quran'), ('rabbit-fast', 'rabbit-running'), ('radiation-alt', 'circle-radiation'), ('radio-alt', 'radio-tuner'), ('random', 'shuffle'), ('rectangle-landscape', 'rectangle'), ('rectangle-portrait', 'rectangle-vertical'), ('redo', 'arrow-rotate-right'), ('redo-alt', 'rotate-right'), ('remove-format', 'text-slash'), ('repeat-1-alt', 'arrows-repeat-1'), ('repeat-alt', 'arrows-repeat'), ('retweet-alt', 'arrows-retweet'), ('rss-square', 'square-rss'), ('running', 'person-running'), ('sad-cry', 'face-sad-cry'), ('sad-tear', 'face-sad-tear'), ('save', 'floppy-disk'), ('sax-hot', 'saxophone-fire'), ('scalpel-path', 'scalpel-line-dashed'), ('scanner-image', 'scanner'), ('search', 'magnifying-glass'), ('search-dollar', 'magnifying-glass-dollar'), ('search-location', 'magnifying-glass-location'), ('search-minus', 'magnifying-glass-minus'), ('search-plus', 'magnifying-glass-plus'), ('sensor-alert', 'sensor-triangle-exclamation'), ('sensor-smoke', 'sensor-cloud'), ('share-alt', 'share-nodes'), ('share-alt-square', 'square-share-nodes'), ('share-square', 'share-from-square'), ('shield-alt', 'shield-halved'), ('shipping-fast', 'truck-fast'), ('shipping-timed', 'truck-clock'), ('shopping-bag', 'bag-shopping'), ('shopping-basket', 'basket-shopping'), ('shopping-cart', 'cart-shopping'), ('shuttle-van', 'van-shuttle'), ('sign', 'sign-hanging'), ('sign-in', 'arrow-right-to-bracket'), ('sign-in-alt', 'right-to-bracket'), ('sign-language', 'hands'), ('sign-out', 'arrow-right-from-bracket'), ('sign-out-alt', 'right-from-bracket'), ('signal-1', 'signal-weak'), ('signal-2', 'signal-fair'), ('signal-3', 'signal-good'), ('signal-4', 'signal-strong'), ('signal-alt', 'signal-bars'), ('signal-alt-1', 'signal-bars-weak'), ('signal-alt-2', 'signal-bars-fair'), ('signal-alt-3', 'signal-bars-good'), ('signal-alt-slash', 'signal-bars-slash'), ('skating', 'person-skating'), ('ski-jump', 'person-ski-jumping'), ('ski-lift', 'person-ski-lift'), ('skiing', 'person-skiing'), ('skiing-nordic', 'person-skiing-nordic'), ('slack-hash', 'slack'), ('sledding', 'person-sledding'), ('sliders-h', 'sliders'), ('sliders-h-square', 'square-sliders'), ('sliders-v', 'sliders-up'), ('sliders-v-square', 'square-sliders-vertical'), ('smile', 'face-smile'), ('smile-beam', 'face-smile-beam'), ('smile-plus', 'face-smile-plus'), ('smile-wink', 'face-smile-wink'), ('smoking-ban', 'ban-smoking'), ('sms', 'comment-sms'), ('snapchat-ghost', 'snapchat'), ('snowboarding', 'person-snowboarding'), 


snowboarding'), ('snowmobile', 'person-snowmobiling'), ('sort-alpha-down', 'arrow-down-a-z'), ('sort-alpha-down-alt', 'arrow-down-z-a'), ('sort-alpha-up', 'arrow-up-a-z'), ('sort-alpha-up-alt', 'arrow-up-z-a'), ('sort-alt', 'arrow-down-arrow-up'), ('sort-amount-down', 'arrow-down-wide-short'), ('sort-amount-down-alt', 'arrow-down-short-wide'), ('sort-amount-up', 'arrow-up-wide-short'), ('sort-amount-up-alt', 'arrow-up-short-wide'), ('sort-circle', 'circle-sort'), ('sort-circle-down', 'circle-sort-down'), ('sort-circle-up', 'circle-sort-up'), ('sort-numeric-down', 'arrow-down-1-9'), ('sort-numeric-down-alt', 'arrow-down-9-1'), ('sort-numeric-up', 'arrow-up-1-9'), ('sort-numeric-up-alt', 'arrow-up-9-1'), ('sort-shapes-down', 'arrow-down-triangle-square'), ('sort-shapes-down-alt', 'arrow-down-square-triangle'), ('sort-shapes-up', 'arrow-up-triangle-square'), ('sort-shapes-up-alt', 'arrow-up-square-triangle'), ('sort-size-down', 'arrow-down-big-small'), ('sort-size-down-alt', 'arrow-down-small-big'), ('sort-size-up', 'arrow-up-big-small'), ('sort-size-up-alt', 'arrow-up-small-big'), ('soup', 'bowl-hot'), ('space-shuttle', 'shuttle-space'), ('space-station-moon-alt', 'space-station-moon-construction'), ('square-root-alt', 'square-root-variable'), ('star-half-alt', 'star-half-stroke'), ('starfighter-alt', 'starfighter-twin-ion-engine'), ('step-backward', 'backward-step'), ('step-forward', 'forward-step'), ('sticky-note', 'note-sticky'), ('stop-circle', 'circle-stop'), ('store-alt', 'shop'), ('store-alt-slash', 'shop-slash'), ('stream', 'bars-staggered'), ('subway', 'train-subway'), ('surprise', 'face-surprise'), ('swimmer', 'person-swimming'), ('swimming-pool', 'water-ladder'), ('sync', 'arrows-rotate'), ('sync-alt', 'rotate'), ('table-tennis', 'table-tennis-paddle-ball'), ('tablet-alt', 'tablet-screen-button'), ('tablet-android', 'tablet'), ('tablet-android-alt', 'tablet-screen'), ('tachometer', 'gauge-simple'), ('tachometer-alt', 'gauge'), ('tachometer-alt-average', 'gauge-med'), ('tachometer-alt-fast', 'gauge'), ('tachometer-alt-fastest', 'gauge-max'), ('tachometer-alt-slow', 'gauge-low'), ('tachometer-alt-slowest', 'gauge-min'), ('tachometer-average', 'gauge-simple-med'), ('tachometer-fast', 'gauge-simple'), ('tachometer-fastest', 'gauge-simple-max'), ('tachometer-slow', 'gauge-simple-low'), ('tachometer-slowest', 'gauge-simple-min'), ('tanakh', 'book-tanakh'), ('tasks', 'list-check'), ('tasks-alt', 'bars-progress'), ('telegram-plane', 'telegram'), ('temperature-down', 'temperature-arrow-down'), ('temperature-frigid', 'temperature-snow'), ('temperature-hot', 'temperature-sun'), ('temperature-up', 'temperature-arrow-up'), ('tenge', 'tenge-sign'), ('th', 'table-cells'), ('th-large', 'table-cells-large'), ('th-list', 'table-list'), ('theater-masks', 'masks-theater'), ('thermometer-empty', 'temperature-empty'), ('thermometer-full', 'temperature-full'), ('thermometer-half', 'temperature-half'), ('thermometer-quarter', 'temperature-quarter'), ('thermometer-three-quarters', 'temperature-three-quarters'), ('thumb-tack', 'thumbtack'), ('thunderstorm', 'cloud-bolt'), ('thunderstorm-moon', 'cloud-bolt-moon'), ('thunderstorm-sun', 'cloud-bolt-sun'), ('ticket-alt', 'ticket-simple'), ('times', 'xmark'), ('times-circle', 'circle-xmark'), ('times-hexagon', 'hexagon-xmark'), ('times-octagon', 'octagon-xmark'), ('times-square', 'square-xmark'), ('tint', 'droplet'), ('tint-slash', 'droplet-slash'), ('tired', 'face-tired'), ('toilet-paper-alt', 'toilet-paper-blank'), ('tombstone-alt', 'tombstone-blank'), ('tools', 'screwdriver-wrench'), ('torah', 'scroll-torah'), ('tram', 'train-tram'), ('transgender-alt', 'transgender'), ('trash-alt', 'trash-can'), ('trash-restore', 'trash-arrow-up'), ('trash-restore-alt', 'trash-can-arrow-up'), ('trash-undo-alt', 'trash-can-undo'), ('tree-alt', 'tree-deciduous'), ('triangle-music', 'triangle-instrument'), ('trophy-alt', 'trophy-star'), ('truck-couch', 'truck-ramp-couch'), ('truck-loading', 'truck-ramp-box'), ('tshirt', 'shirt'), ('tv-alt', 'tv'), ('undo', 'arrow-rotate-left'), ('undo-alt', 'rotate-left'), ('university', 'building-columns'), ('unlink', 'link-slash'), ('unlock-alt', 'unlock-keyhole'), ('usd-circle', 'circle-dollar'), ('usd-square', 'square-dollar'), ('user-alt', 'user-large'), ('user-alt-slash', 'user-large-slash'), ('user-chart', 'chart-user'), ('user-circle', 'circle-user'), ('user-cog', 'user-gear'), ('user-edit', 'user-pen'), ('user-friends', 'user-group'), ('user-hard-hat', 'user-helmet-safety'), ('user-md', 'user-doctor'), ('user-md-chat', 'user-doctor-message'), ('user-times', 'user-xmark'), ('users-class', 'screen-users'), ('users-cog', 'users-gear'), ('users-crown', 'user-group-crown'), ('utensil-fork', 'fork'), ('utensil-knife', 'knife'), ('utensil-spoon', 'spoon'), ('utensils-alt', 'fork-knife'), ('vhs', 'cassette-vhs'), ('volleyball-ball', 'volleyball'), ('volume-down', 'volume-low'), ('volume-mute', 'volume-xmark'), ('volume-up', 'volume-high'), ('vote-nay', 'xmark-to-slot'), ('vote-yea', 'check-to-slot'), ('walking', 'person-walking'), ('warehouse-alt', 'warehouse-full'), ('washer', 'washing-machine'), ('water-lower', 'water-arrow-down'), ('water-rise', 'water-arrow-up'), ('waveform-path', 'waveform-lines'), ('webcam', 'camera-web'), ('webcam-slash', 'camera-web-slash'), ('weight', 'weight-scale'), ('wifi-1', 'wifi-weak'), ('wifi-2', 'wifi-fair'), ('window-alt', 'window-flip'), ('window-close', 'rectangle-xmark'), ('wine-glass-alt', 'wine-glass-empty')) AS mapping(from_icon, to_icon)\n)\nUPDATE directory_columns\nSET icon =\n  CASE\n    WHEN icon LIKE 'fab-%' THEN CONCAT('fab-', remaps.to_icon)\n    WHEN icon LIKE 'far-%' THEN CONCAT('far-', remaps.to_icon)\n    WHEN icon LIKE 'fab fa-%' THEN CONCAT('fab-', remaps.to_icon)\n    WHEN icon LIKE 'far fa-%' THEN CONCAT('far-', remaps.to_icon)\n    ELSE remaps.to_icon\n  END\nFROM remaps\nWHERE icon = remaps.from_icon\n  OR icon = CONCAT('fa-', remaps.from_icon)\n  OR icon = CONCAT('far-', remaps.from_icon)\n  OR icon = CONCAT('fab-', remaps.from_icon)\n  OR icon = CONCAT('far fa-', remaps.from_icon)\n  OR icon = CONCAT('fab fa-', remaps.from_icon)\n  OR icon = CONCAT('fas fa-', remaps.from_icon);\n")
   -> 0.0055s
-- execute("UPDATE directory_columns\nSET icon =\nCASE\n  WHEN icon LIKE 'fas fa-%' THEN SUBSTRING(icon FROM 8)\n  WHEN icon LIKE 'far fa-%' THEN CONCAT('far-', SUBSTRING(icon FROM 8))\n  WHEN icon LIKE 'fab fa-%' THEN CONCAT('fab-', SUBSTRING(icon FROM 8))\n  WHEN icon LIKE 'fa-%' THEN SUBSTRING(icon FROM 4)\n  ELSE icon\nEND\nWHERE icon LIKE 'fa-%'\n  OR icon LIKE 'far fa-%'\n  OR icon LIKE 'fab fa-%'\n  OR icon LIKE 'fas fa-%';\n")
   -> 0.0003s
== 20241204085540 RemapToFa6IconNames: migrated (0.0600s) =====================

== 20241205035402 ChangeDefaultForBadgesIcon: migrating =======================
-- change_column_default(:badges, :icon, {:from=>"fa-certificate", :to=>"certificate"})
   -> 0.0023s
-- execute("UPDATE badges\nSET icon = 'certificate'\nWHERE icon = 'fa-certificate';\n")
   -> 0.0003s
== 20241205035402 ChangeDefaultForBadgesIcon: migrated (0.0032s) ==============

== 20241205162117 AddColumnsToMovedPosts: migrating ===========================
-- add_column(:moved_posts, :old_topic_title, :string)
   -> 0.0010s
-- add_column(:moved_posts, :post_user_id, :integer)
   -> 0.0003s
-- add_column(:moved_posts, :user_id, :integer)
   -> 0.0002s
-- add_index(:moved_posts, [:new_topic_id, :post_user_id])
   -> 0.0031s
== 20241205162117 AddColumnsToMovedPosts: migrated (0.0052s) ==================

== 20241206002425 DropExperimentalTopicsFilterSiteSetting: migrating ==========
-- execute("DELETE FROM site_settings\nWHERE name = 'experimental_topics_filter'\n")
   -> 0.0002s
== 20241206002425 DropExperimentalTopicsFilterSiteSetting: migrated (0.0006s) =

== 20241206121401 DeleteCategoriesOnlyOptimizedSiteSetting: migrating =========
-- execute("DELETE FROM site_settings WHERE name = 'desktop_category_page_style' AND value = 'categories_only_optimized'")
   -> 0.0002s
== 20241206121401 DeleteCategoriesOnlyOptimizedSiteSetting: migrated (0.0005s) 

== 20241211030039 RemoveGlimmerPostMenuGroupsSetting: migrating ===============
-- execute("DELETE FROM site_settings\nWHERE name = 'glimmer_post_menu_groups'\n")
   -> 0.0002s
== 20241211030039 RemoveGlimmerPostMenuGroupsSetting: migrated (0.0005s) ======

== 20241211222608 AddFullMoveToMovedPostRecords: migrating ====================
-- add_column(:moved_posts, :full_move, :boolean)
   -> 0.0003s
== 20241211222608 AddFullMoveToMovedPostRecords: migrated (0.0007s) ===========

== 20241224191732 ChangeFullNameRequiredSetting: migrating ====================
== 20241224191732 ChangeFullNameRequiredSetting: migrated (0.0012s) ===========

== 20241226162229 AddChatSendShortcutPreference: migrating ====================
-- add_column(:user_options, :chat_send_shortcut, :integer, {:default=>0, :null=>false})
   -> 0.0007s
== 20241226162229 AddChatSendShortcutPreference: migrated (0.0011s) ===========

== 20250115031117 RemoveUserProfileFromOverriddenRobots: migrating ============
-- select_value("SELECT value FROM site_settings WHERE name = 'overridden_robots_txt' AND value LIKE '%User-agent: *\nDisallow: /admin/\nDisallow: /auth/\nDisallow: /assets/browser-update*.js\nDisallow: /email/\nDisallow: /session\nDisallow: /user-api-key\nDisallow: /*?api_key*\nDisallow: /*?*api_key*\nDisallow: /badges\nDisallow: /u/%'")
   -> 0.0002s
== 20250115031117 RemoveUserProfileFromOverriddenRobots: migrated (0.0006s) ===

== 20250116024516 UpdateFontSiteSettingsType: migrating =======================
-- execute("UPDATE site_settings SET data_type=8 WHERE name IN('base_font', 'heading_font')")
   -> 0.0002s
== 20250116024516 UpdateFontSiteSettingsType: migrated (0.0005s) ==============

== 20250117065027 SetDefaultFontForExistingSites: migrating ===================
-- execute("INSERT INTO site_settings(name, data_type, value, created_at, updated_at)\nVALUES('base_font', 8, 'arial', NOW(), NOW())\nON CONFLICT (name) DO NOTHING\n")
   -> 0.0002s
-- execute("INSERT INTO site_settings(name, data_type, value, created_at, updated_at)\nVALUES('heading_font', 8, 'arial', NOW(), NOW())\nON CONFLICT (name) DO NOTHING\n")
   -> 0.0002s
== 20250117065027 SetDefaultFontForExistingSites: migrated (0.0029s) ==========

== 20250119222805 FillFastTypingThresholdBasedOnDeprecatedSetting: migrating ==
== 20250119222805 FillFastTypingThresholdBasedOnDeprecatedSetting: migrated (0.0005s) 

== 20250120115539 AddDarkHexToColorSchemeColor: migrating =====================
-- add_column(:color_scheme_colors, :dark_hex, :string, {:limit=>6})
   -> 0.0004s
== 20250120115539 AddDarkHexToColorSchemeColor: migrated (0.0007s) ============

== 20250121180125 CreateThemeColorScheme: migrating ===========================
-- create_table(:theme_color_schemes)
   -> 0.0039s
-- add_index(:theme_color_schemes, :theme_id, {:unique=>true})
   -> 0.0027s
-- add_index(:theme_color_schemes, :color_scheme_id, {:unique=>true})
   -> 0.0029s
== 20250121180125 CreateThemeColorScheme: migrated (0.0100s) ==================

== 20250124062108 RemapDeprecatedIconNamesForSeededBadges: migrating ==========
-- execute("WITH remaps AS (\n  SELECT from_icon, to_icon\n  FROM (VALUES ('smile', 'face-smile'), ('share-alt', 'share-nodes'))\n  AS mapping(from_icon, to_icon)\n)\nUPDATE badges\nSET icon = remaps.to_icon\nFROM remaps\nWHERE icon = remaps.from_icon;\n")
   -> 0.0005s
== 20250124062108 RemapDeprecatedIconNamesForSeededBadges: migrated (0.0009s) =

== 20250130205841 FixIncorrectFastTypingThresholdSetting: migrating ===========
-- execute("UPDATE site_settings SET value = 'disabled' WHERE name = 'fast_typing_threshold' AND value = 'off'")
   -> 0.0002s
== 20250130205841 FixIncorrectFastTypingThresholdSetting: migrated (0.0005s) ==

== 20250205174221 AddSerializeTopicOpLikesDataThemeModifier: migrating ========
-- add_column(:theme_modifier_sets, :serialize_topic_op_likes_data, :boolean, {:null=>true})
   -> 0.0004s
== 20250205174221 AddSerializeTopicOpLikesDataThemeModifier: migrated (0.0007s) 

== 20250212044021 RenameAllowAllUsersToFlagIllegalContentSiteSetting: migrating 
-- execute("UPDATE site_settings SET name = 'allow_all_users_to_flag_illegal_content' where name = 'allow_tl0_and_anonymous_users_to_flag_illegal_content'")
   -> 0.0002s
== 20250212044021 RenameAllowAllUsersToFlagIllegalContentSiteSetting: migrated (0.0005s) 

== 20250212045125 AddTypeSourceToReviewable: migrating ========================
-- add_column(:reviewables, :type_source, :string, {:null=>false, :default=>"unknown"})
   -> 0.0006s
== 20250212045125 AddTypeSourceToReviewable: migrated (0.0023s) ===============

== 20250217003916 XSummaryLargeImageBasedOnDeprecatedSetting: migrating =======
== 20250217003916 XSummaryLargeImageBasedOnDeprecatedSetting: migrated (0.0007s) 

== 20250220045740 AddContextToReviewableScores: migrating =====================
-- add_column(:reviewable_scores, :context, :string)
   -> 0.0004s
== 20250220045740 AddContextToReviewableScores: migrated (0.0007s) ============

== 20250220090521 AddLastUnreadMessageWhenEmailedIdToChatThreadMemberships: migrating 
-- add_column(:user_chat_thread_memberships, :last_unread_message_when_emailed_id, :bigint)
   -> 0.0003s
== 20250220090521 AddLastUnreadMessageWhenEmailedIdToChatThreadMemberships: migrated (0.0006s) 

== 20250227142351 MigrateSidekiqJobs: migrating ===============================
== 20250227142351 MigrateSidekiqJobs: migrated (0.0025s) ======================

== 20250304034313 AddComposerColumnsToPostStat: migrating =====================
-- add_column(:post_stats, :composer_version, :integer)
   -> 0.0004s
-- add_column(:post_stats, :writing_device, :string)
   -> 0.0032s
-- add_column(:post_stats, :writing_device_user_agent, :string)
   -> 0.0003s
== 20250304034313 AddComposerColumnsToPostStat: migrated (0.0044s) ============

== 20250304054720 AddScopeModeToApiKeys: migrating ============================
-- add_column(:api_keys, :scope_mode, :integer, {:null=>true})
   -> 0.0004s
== 20250304054720 AddScopeModeToApiKeys: migrated (0.0007s) ===================

== 20250304074934 BackfillApiKeyScopeModes: migrating =========================
== 20250304074934 BackfillApiKeyScopeModes: migrated (0.0010s) ================

== 20250305233449 PopulateTypeSourceInReviewable: migrating ===================
== 20250305233449 PopulateTypeSourceInReviewable: migrated (0.0020s) ==========

== 20250307031538 MigrateCategoryToCategoriesPostCreated: migrating ===========
-- execute("DELETE FROM discourse_automation_fields\nWHERE name = 'restricted_categories'\n  AND target = 'trigger'\n  AND automation_id IN (\n    SELECT id FROM discourse_automation_automations\n    WHERE trigger = 'post_created_edited'\n  )\n")
   -> 0.0004s
-- execute("INSERT INTO discourse_automation_fields (\n  automation_id, component, name, target, metadata, created_at, updated_at\n)\nSELECT\n  f.automation_id,\n  'categories' as component,\n  'restricted_categories' as name,\n  f.target,\n  jsonb_build_object('value', ARRAY[CAST(f.metadata->>'value' AS INTEGER)]) as metadata,\n  NOW() as created_at,\n  NOW() as updated_at\nFROM discourse_automation_fields f\nJOIN discourse_automation_automations a ON a.id = f.automation_id\nWHERE f.component = 'category'\nAND f.name = 'restricted_category'\nAND f.target = 'trigger'\nAND f.metadata->>'value' IS NOT NULL\nAND a.trigger = 'post_created_edited'\n")
   -> 0.0003s
== 20250307031538 MigrateCategoryToCategoriesPostCreated: migrated (0.0011s) ==

== 20250307034117 RemoveOldAdminSidebarEnabledGroupsSiteSettings: migrating ===
-- execute("DELETE FROM site_settings WHERE name = 'admin_sidebar_enabled_groups'")
   -> 0.0002s
== 20250307034117 RemoveOldAdminSidebarEnabledGroupsSiteSettings: migrated (0.0006s) 

== 20250311041851 AddIndexToPostStatComposerColumns: migrating ================
-- remove_index(:post_stats, :composer_version, {:algorithm=>:concurrently, :if_exists=>true})
   -> 0.0014s
-- remove_index(:post_stats, :writing_device, {:algorithm=>:concurrently, :if_exists=>true})
   -> 0.0011s
-- add_index(:post_stats, :composer_version, {:algorithm=>:concurrently})
   -> 0.0032s
-- add_index(:post_stats, :writing_device, {:algorithm=>:concurrently})
   -> 0.0028s
== 20250311041851 AddIndexToPostStatComposerColumns: migrated (0.0091s) =======

== 20250311073009 EnableWelcomeBannerNewSites: migrating ======================
-- execute("INSERT INTO site_settings(name, data_type, value, created_at, updated_at)\nVALUES('enable_welcome_banner', 5, 'f', NOW(), NOW())\nON CONFLICT (name) DO NOTHING\n")
   -> 0.0003s
== 20250311073009 EnableWelcomeBannerNewSites: migrated (0.0012s) =============

== 20250313044812 RemoveUniqueConstraintFromTagUsersIndexes: migrating ========
-- remove_index(:tag_users, {:name=>:idx_tag_users_ix1, :algorithm=>:concurrently, :if_exists=>true})
   -> 0.0079s
-- remove_index(:tag_users, {:name=>:idx_tag_users_ix2, :algorithm=>:concurrently, :if_exists=>true})
   -> 0.0074s
-- remove_index(:tag_users, [:user_id, :tag_id, :notification_level], {:algorithm=>:concurrently, :if_exists=>true})
   -> 0.0014s
-- remove_index(:tag_users, [:tag_id, :user_id, :notification_level], {:algorithm=>:concurrently, :if_exists=>true})
   -> 0.0011s
-- add_index(:tag_users, [:user_id, :tag_id, :notification_level], {:algorithm=>:concurrently})
   -> 0.0028s
-- add_index(:tag_users, [:tag_id, :user_id, :notification_level], {:algorithm=>:concurrently})
   -> 0.0028s
== 20250313044812 RemoveUniqueConstraintFromTagUsersIndexes: migrated (0.0242s) 

== 20250313045010 AddIndexToUsersIpAddress: migrating =========================
-- remove_index(:users, :ip_address, {:algorithm=>:concurrently, :name=>"idx_users_ip_address", :if_exists=>true})
   -> 0.0032s
-- add_index(:users, :ip_address, {:algorithm=>:concurrently, :name=>"idx_users_ip_address"})
   -> 0.0034s
== 20250313045010 AddIndexToUsersIpAddress: migrated (0.0073s) ================


[2025-03-19 02:09:40] Reconnecting to the database...
[2025-03-19 02:09:40] Reloading site settings...
[2025-03-19 02:09:40] Disabling outgoing emails for non-staff users...
[2025-03-19 02:09:40] Disabling readonly mode...
[2025-03-19 02:09:40] Clearing category cache...
[2025-03-19 02:09:40] Reloading translations...
[2025-03-19 02:09:40] Remapping uploads...
[2025-03-19 02:09:40] Restoring uploads, this may take a while...
[2025-03-19 02:10:00] EXCEPTION: 1 posts are not remapped to new S3 upload URL. S3 migration failed for db 'default'.
[2025-03-19 02:10:00] /var/www/discourse/lib/file_store/to_s3_migration.rb:132:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:81:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:383:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:59:in `migrate'
/var/www/discourse/lib/file_store/s3_store.rb:354:in `copy_from'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:69:in `restore_uploads'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:49:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:167:in `restore_uploads'
/var/www/discourse/lib/backup_restore/restorer.rb:71:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:20:in `restore'
/var/www/discourse/script/spawn_backup_restore.rb:33:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'
[2025-03-19 02:10:00] Trying to rollback...
[2025-03-19 02:10:00] Rolling back...
[2025-03-19 02:10:00] Cleaning stuff up...
[2025-03-19 02:10:00] Dropping functions from the discourse_functions schema...
[2025-03-19 02:10:00] Removing tmp '/var/www/discourse/tmp/restores/default/2025-03-19-020905' directory...
[2025-03-19 02:10:00] Unpausing sidekiq...
[2025-03-19 02:10:00] Marking restore as finished...
[2025-03-19 02:10:00] Notifying 'Admin' of the end of the restore...

I think this is everything and I apologize for posting so much.

I think this is the important line. I see no helpful supporting info near it, so although the answer is probably a small tweak to your database, I don’t know how you’d find out which post failed to remap.

Is there a way to only migrate the db? Or can I remap the existing images in S3 without a restore?

This is the issue. You need to find the upload that isn’t on s3, I think.

This sounds like the problem mentioned in Can't restore a backup if it includes link to Discourse onebox :anxious_face_with_sweat:

You should be able to fix this during the restore, but you need to do it on the shell.

cd /var/discourse
./launcher enter app

# start the restore with the --pause argument
discourse restore --pause <backup_filename>

It will pause the restore process at two points:

  1. Before DB migrations are run – you can ignore that; press a key to continue
  2. Before Uploads are restored. You will have access to the unmodified uploads table (no remaps have been run yet) which allows you to fix uploads before the restore process aborts because of them.

Now, open another SSH session to your server and start a rails console:

cd /var/discourse
./launcher enter app

rails c

You’ll need to figure out which Post is causing the restore to fail. If you are lucky, you’ll find it by executing the following in the rails console:

current_db = RailsMultisite::ConnectionManagement.current_db
cdn_path = SiteSetting.cdn_path("/uploads/#{current_db}/original").sub(/https?:/, "")
Post.where("cooked LIKE '%#{cdn_path}%'")
6 Likes

I didn’t know about that one!

2 Likes

So that seemed to find a few posts but I’m unsure how to delete or fix them prior to completing restoring the uploads.

[#<Post:0x0000fbe1dfc5bbe8
 id: 210,
 user_id: 1,
 topic_id: 76,
 post_number: 1,
 raw: "[poll type=multiple results=always min=1 max=2 cha...",
 cooked: "<div class=\"poll\" data-poll-status=\"open\" data-pol...",
 created_at: "2020-01-02 19:41:05.980378000 +0000",
 updated_at: "2020-01-04 01:18:37.573545000 +0000",
 reply_to_post_number: nil,
 reply_count: 0,
 quote_count: 0,
 deleted_at: nil,
 off_topic_count: 0,
 like_count: 0,
 incoming_link_count: 2,
 bookmark_count: 0,
 score: 13.0,
 reads: 15,
 post_type: 1,
 sort_order: 1,
 last_editor_id: 1,
 hidden: false,
 hidden_reason_id: nil,
 notify_moderators_count: 0,
 spam_count: 0,
 illegal_count: 0,
 inappropriate_count: 0,
 last_version_at: "2020-01-02 19:47:03.890656000 +0000",
 user_deleted: false,
 reply_to_user_id: nil,
 percent_rank: 0.1111111111111111,
 notify_user_count: 0,
 like_score: 0,
 deleted_by_id: nil,
 edit_reason: nil,
 word_count: 30,
 version: 2,
 cook_method: 1,
 wiki: false,
 baked_at: "2020-01-24 18:29:52.371387000 +0000",
 baked_version: 2,
 hidden_at: nil,
 self_edits: 1,
 reply_quoted: false,
 via_email: false,
 raw_email: nil,
Preparing full inspection value...
=>
[#<Post:0x0000fbe1dfc5bbe8
 id: 210,
 user_id: 1,
 topic_id: 76,
 post_number: 1,
 raw: "[poll type=multiple results=always min=1 max=2 cha...",
 cooked: "<div class=\"poll\" data-poll-status=\"open\" data-pol...",
 created_at: "2020-01-02 19:41:05.980378000 +0000",
 updated_at: "2020-01-04 01:18:37.573545000 +0000",
 reply_to_post_number: nil,
 reply_count: 0,
 quote_count: 0,
 deleted_at: nil,
 off_topic_count: 0,
 like_count: 0,
 incoming_link_count: 2,
 bookmark_count: 0,
 score: 13.0,
 reads: 15,
 post_type: 1,
 sort_order: 1,
 last_editor_id: 1,
 hidden: false,
 hidden_reason_id: nil,
 notify_moderators_count: 0,
 spam_count: 0,
 illegal_count: 0,
 inappropriate_count: 0,
 last_version_at: "2020-01-02 19:47:03.890656000 +0000",
 user_deleted: false,
 reply_to_user_id: nil,
 percent_rank: 0.1111111111111111,
 notify_user_count: 0,
 like_score: 0,
 deleted_by_id: nil,
 edit_reason: nil,
 word_count: 30,
 version: 2,
 cook_method: 1,
 wiki: false,
 baked_at: "2020-01-24 18:29:52.371387000 +0000",
 baked_version: 2,
 hidden_at: nil,
 self_edits: 1,
 reply_quoted: false,
 via_email: false,
 raw_email: nil,
 public_version: 2,
:...skipping...
=>
[#<Post:0x0000fbe1dfc5bbe8
 id: 210,
 user_id: 1,
 topic_id: 76,
 post_number: 1,
 raw: "[poll type=multiple results=always min=1 max=2 cha...",
 cooked: "<div class=\"poll\" data-poll-status=\"open\" data-pol...",
 created_at: "2020-01-02 19:41:05.980378000 +0000",
 updated_at: "2020-01-04 01:18:37.573545000 +0000",
 reply_to_post_number: nil,
 reply_count: 0,
 quote_count: 0,
 deleted_at: nil,
 off_topic_count: 0,
 like_count: 0,
 incoming_link_count: 2,
 bookmark_count: 0,
 score: 13.0,
 reads: 15,
 post_type: 1,
 sort_order: 1,
 last_editor_id: 1,
 hidden: false,
 hidden_reason_id: nil,
 notify_moderators_count: 0,
 spam_count: 0,
 illegal_count: 0,
 inappropriate_count: 0,
 last_version_at: "2020-01-02 19:47:03.890656000 +0000",
 user_deleted: false,
 reply_to_user_id: nil,
 percent_rank: 0.1111111111111111,
 notify_user_count: 0,
 like_score: 0,
 deleted_by_id: nil,
 edit_reason: nil,
 word_count: 30,
 version: 2,
 cook_method: 1,
 wiki: false,
 baked_at: "2020-01-24 18:29:52.371387000 +0000",
 baked_version: 2,
 hidden_at: nil,
 self_edits: 1,
 reply_quoted: false,
 via_email: false,
 raw_email: nil,
 public_version: 2,
 action_code: nil,
 locked_by_id: nil,
 image_upload_id: 50,
 outbound_message_id: nil>,
#<Post:0x0000fbe1dfbf74e0
 id: 296,
 user_id: 17,
 topic_id: 102,
 post_number: 1,
 raw: "Hello everybody!\n I would like to try to debate th...",
 cooked: "<p>Hello everybody!<br>\nI would like to try to deb...",
 created_at: "2020-01-19 18:20:12.690712000 +0000",
 updated_at: "2021-01-16 01:26:03.982006000 +0000",
 reply_to_post_number: nil,
 reply_count: 0,
 quote_count: 0,
 deleted_at: nil,
 off_topic_count: 0,
 like_count: 0,
 incoming_link_count: 2,
 bookmark_count: 0,
 score: 12.4,
 reads: 12,
:

I got it working. Thanks everyone for the help!

2 Likes