diff --git a/sites/docs/web/assets/js/host-redirect.min.js b/sites/docs/web/assets/js/host-redirect.min.js index aa0ac3bb97..cfa5aa20c3 100644 --- a/sites/docs/web/assets/js/host-redirect.min.js +++ b/sites/docs/web/assets/js/host-redirect.min.js @@ -16,7 +16,7 @@ var hostRedirect=(()=>{var Gt=Object.defineProperty;var Ve=Object.getOwnProperty `)-1&&t.runes[2]===C.CODES.get(` `)+1&&t.runes[3]===w.MAX_RUNE&&(t.runes=[],t.op=g.Op.ANY_CHAR_NOT_NL))}collapse(t,e){if(t.length===1)return t[0];let s=0;for(let r of t)s+=r.op===e?r.subs.length:1;let o=new Array(s).fill(null),i=0;for(let r of t)if(r.op===e){for(let a=0;a0&&(y=y.subs[0]),y.op===g.Op.LITERAL&&(p=y.runes,h=y.runes.length,D=y.flags&m.FOLD_CASE),D===r){let E=0;for(;E0){B=E;continue}}}if(d!==a)if(d===a+1)t[o++]=t[e+a];else{let y=this.newRegexp(g.Op.LITERAL);y.flags=r,y.runes=i.slice(0,B);for(let A=a;A0){let s=this.removeLeadingString(t.subs[0],e);if(t.subs[0]=s,s.op===g.Op.EMPTY_MATCH)switch(this.reuse(s),t.subs.length){case 0:case 1:t.op=g.Op.EMPTY_MATCH,t.subs=null;break;case 2:{let o=t;t=t.subs[1],this.reuse(o);break}default:t.subs=t.subs.slice(1,t.subs.length);break}return t}return t.op===g.Op.LITERAL&&(t.runes=t.runes.slice(e,t.runes.length),t.runes.length===0&&(t.op=g.Op.EMPTY_MATCH)),t}removeLeadingRegexp(t,e){if(t.op===g.Op.CONCAT&&t.subs.length>0){switch(e&&this.reuse(t.subs[0]),t.subs=t.subs.slice(1,t.subs.length),t.subs.length){case 0:{t.op=g.Op.EMPTY_MATCH,t.subs=g.emptySubs();break}case 1:{let s=t;t=t.subs[0],this.reuse(s);break}}return t}return e&&this.reuse(t),this.newRegexp(g.Op.EMPTY_MATCH)}parseInternal(){if((this.flags&m.LITERAL)!==0)return n.literalRegexp(this.wholeRegexp,this.flags);let t=-1,e=-1,s=-1,o=new jt(this.wholeRegexp);for(;o.more();){let B=-1;t:switch(o.peek()){case C.CODES.get("("):if((this.flags&m.LOOKBEHIND)!==0){if(o.lookingAt("(?<=")){this.parsePosLookBehind(),o.skip(4);break}if(o.lookingAt("(?>16,s=(r&w.MAX_BMP)<<16>>16,this.repeat(g.Op.REPEAT,e,s,B,o,t);break}case C.CODES.get("\\"):{let r=o.pos();if(o.skip(1),(this.flags&m.PERL_X)!==0&&o.more())switch(o.pop()){case C.CODES.get("A"):this.op(g.Op.BEGIN_TEXT);break t;case C.CODES.get("b"):this.op(g.Op.WORD_BOUNDARY);break t;case C.CODES.get("B"):this.op(g.Op.NO_WORD_BOUNDARY);break t;case C.CODES.get("C"):throw new x(n.ERR_INVALID_ESCAPE,"\\C");case C.CODES.get("Q"):{let p=o.rest(),h=p.indexOf("\\E");h>=0?(p=p.substring(0,h),o.skipString(p),o.skipString("\\E")):o.skipString(p);let D=0;for(;D");if(a<0)throw new x(n.ERR_INVALID_NAMED_CAPTURE,s);let c=s.substring(r,a);if(t.skipString(c),t.skip(r+1),!n.isValidCaptureName(c))throw new x(n.ERR_INVALID_NAMED_CAPTURE,s.substring(0,a+1));let d=this.op(g.Op.LEFT_PAREN);if(d.cap=++this.numCap,this.namedGroups[c])throw new x(n.ERR_DUPLICATE_NAMED_CAPTURE,c);this.namedGroups[c]=this.numCap,d.name=c;return}t.skip(2);let o=this.flags,i=1,B=!1;t:for(;t.more();){let r=t.pop();switch(r){case C.CODES.get("i"):o|=m.FOLD_CASE,B=!0;break;case C.CODES.get("m"):o&=-17,B=!0;break;case C.CODES.get("s"):o|=m.DOT_NL,B=!0;break;case C.CODES.get("U"):o|=m.NON_GREEDY,B=!0;break;case C.CODES.get("-"):if(i<0)break t;i=-1,o=~o,B=!1;break;case C.CODES.get(":"):case C.CODES.get(")"):if(i<0){if(!B)break t;o=~o}r===C.CODES.get(":")&&this.op(g.Op.LEFT_PAREN),this.flags=o;return;default:break t}}throw new x(n.ERR_INVALID_PERL_OP,t.from(e))}parsePosLookBehind(){let t=this.newRegexp(g.Op.LEFT_PAREN);return t.flags=this.flags,t.lb=++this.nlb,this.push(t)}parseNegLookBehind(){let t=this.newRegexp(g.Op.LEFT_PAREN);return t.flags=this.flags,t.lb=-++this.nlb,this.push(t)}parseVerticalBar(){this.concat(),this.swapVerticalBar()||this.op(g.Op.VERTICAL_BAR)}swapVerticalBar(){let t=this.stack.length;if(t>=3&&this.stack[t-2].op===g.Op.VERTICAL_BAR&&n.isCharClass(this.stack[t-1])&&n.isCharClass(this.stack[t-3])){let e=this.stack[t-1],s=this.stack[t-3];if(e.op>s.op){let o=s;s=e,e=o,this.stack[t-3]=s}return n.mergeCharClass(s,e),this.reuse(e),this.pop(),!0}if(t>=2){let e=this.stack[t-1],s=this.stack[t-2];if(s.op===g.Op.VERTICAL_BAR)return t>=3&&this.cleanAlt(this.stack[t-3]),this.stack[t-2]=e,this.stack[t-1]=s,!0}return!1}parseRightParen(){if(this.concat(),this.swapVerticalBar()&&this.pop(),this.alternate(),this.stack.length<2)throw new x(n.ERR_UNEXPECTED_PAREN,this.wholeRegexp);let e=this.pop(),s=this.pop();if(s.op!==g.Op.LEFT_PAREN)throw new x(n.ERR_UNEXPECTED_PAREN,this.wholeRegexp);if(this.flags=s.flags,s.lb!==0){s.lb>0?s.op=g.Op.PLB:s.op=g.Op.NLB,s.subs=[e],this.push(s);return}s.cap===0?this.push(e):(s.op=g.Op.CAPTURE,s.subs=[e],this.push(s))}parsePerlClassEscape(t,e){let s=t.pos();if((this.flags&m.PERL_X)===0||!t.more()||t.pop()!==C.CODES.get("\\")||!t.more())return!1;t.pop();let o=t.from(s),i=re.has(o)?re.get(o):null;return i===null?!1:(e.appendGroup(i,(this.flags&m.FOLD_CASE)!==0),!0)}parseNamedClass(t,e){let s=t.rest(),o=s.indexOf(":]");if(o<0)return!1;let i=s.substring(0,o+2);t.skipString(i);let B=we.has(i)?we.get(i):null;if(B===null)throw new x(n.ERR_INVALID_CHAR_RANGE,i);return e.appendGroup(B,(this.flags&m.FOLD_CASE)!==0),!0}parseUnicodeClass(t,e){let s=t.pos();if((this.flags&m.UNICODE_GROUPS)===0||!t.lookingAt("\\p")&&!t.lookingAt("\\P"))return!1;t.skip(1);let o=1,i=t.pop();if(i===C.CODES.get("P")&&(o=-1),!t.more())throw t.rewindTo(s),new x(n.ERR_INVALID_CHAR_RANGE,t.rest());i=t.pop();let B;if(i!==C.CODES.get("{"))B=b.runeToString(i);else{let d=t.rest(),p=d.indexOf("}");if(p<0)throw t.rewindTo(s),new x(n.ERR_INVALID_CHAR_RANGE,t.rest());B=d.substring(0,p),t.skipString(B),t.skip(1)}B.length!==0&&B.codePointAt(0)===C.CODES.get("^")&&(o=0-o,B=B.substring(1));let r=n.unicodeTable(B);if(r===null)throw new x(n.ERR_INVALID_CHAR_RANGE,t.from(s));r.sign<0&&(o=0-o);let a=r.tab,c=r.fold;if((this.flags&m.FOLD_CASE)===0||c===null)e.appendTableWithSign(a,o);else{let d=new Q().appendTable(a).appendTable(c).cleanClass().toArray();e.appendClassWithSign(d,o)}return!0}parseClass(t){let e=t.pos();t.skip(1);let s=this.newRegexp(g.Op.CHAR_CLASS);s.flags=this.flags;let o=new Q,i=1;t.more()&&t.lookingAt("^")&&(i=-1,t.skip(1),(this.flags&m.CLASS_NL)===0&&o.appendRange(C.CODES.get(` `),C.CODES.get(` -`)));let B=!0;for(;!t.more()||t.peek()!==C.CODES.get("]")||B;){if(t.more()&&t.lookingAt("-")&&(this.flags&m.PERL_X)===0&&!B){let d=t.rest();if(d==="-"||!d.startsWith("-]"))throw t.rewindTo(e),new x(n.ERR_INVALID_CHAR_RANGE,t.rest())}B=!1;let r=t.pos();if(t.lookingAt("[:")){if(this.parseNamedClass(t,o))continue;t.rewindTo(r)}if(this.parseUnicodeClass(t,o)||this.parsePerlClassEscape(t,o))continue;t.rewindTo(r);let a=n.parseClassChar(t,e),c=a;if(t.more()&&t.lookingAt("-")){if(t.skip(1),t.more()&&t.lookingAt("]"))t.skip(-1);else if(c=n.parseClassChar(t,e),c0&&(a.prefixRune=a.prefix.codePointAt(0)),a.namedGroups=o.namedGroups,a}static match(t,e){return n.compile(t).match(e)}constructor(t,e,s=0,o=0){this.expr=t,this.prog=e,this.numSubexp=s,this.longest=o,this.cond=e.startCond(),this.prefix=null,this.prefixUTF8=null,this.prefixComplete=!1,this.prefixRune=0,this.pooled=new qt,this.dfa=new mt(this.prog),this.onepass=Et.compile(this.prog),this.prefilter=null}matchPrefixComplete(t,e,s,o){if((s===m.ANCHOR_START||s===m.ANCHOR_BOTH)&&e!==0)return null;let i=-1,B=-1,r=t.prefixLength(this);if(s===m.UNANCHORED){let a=t.index(this,e);if(a<0)return null;i=e+a,B=i+r}else if(s===m.ANCHOR_BOTH){if(t.endPos()!==r||t.index(this,0)!==0)return null;i=0,B=r}else if(s===m.ANCHOR_START){if(t.index(this,0)!==0)return null;i=0,B=r}if(i<0)return null;if(o>0){let a=new Int32Array(o).fill(-1);return a[0]=i,a[1]=B,Array.from(a)}return[]}executeEngine(t,e,s,o){if(this.prefixComplete&&(o===0||this.numSubexp===0))return this.matchPrefixComplete(t,e,s,o);if(this.prefilter!==null&&s===m.UNANCHORED&&!this.prefilter.eval(t,e))return null;if(this.onepass!==null)return Et.execute(this,t,e,s,o);if(o>0)return this.prog.numLb===0&&t.endPos()<=it.maxBitStateLen(this.prog)?it.execute(this,t,e,s,o):this.doExecuteNFA(t,e,s,o);if(this.prog.numLb===0){let i=this.dfa.match(t,e,s);if(i!==null)return i?[]:null;if(t.endPos()<=it.maxBitStateLen(this.prog))return it.execute(this,t,e,s,o)}return this.doExecuteNFA(t,e,s,o)}numberOfCapturingGroups(){return this.numSubexp}numberOfInstructions(){return this.prog.numInst()}get(){let t;do t=this.pooled.get();while(t&&!this.pooled.compareAndSet(t,t.next));return t}reset(){this.pooled.set(null)}put(t,e){let s=this.pooled.get();do s=this.pooled.get(),!e&&s&&(t=Bt.fromMachine(t),e=!0),t.next!==s&&(t.next=s);while(!this.pooled.compareAndSet(s,t))}toString(){return this.expr}doExecuteNFA(t,e,s,o){let i=this.get(),B=!1;i?i.next!==null&&(i=Bt.fromMachine(i),B=!0):(i=Bt.fromRE2(this),B=!0),i.init(o);let r=i.match(t,e,s)?i.submatches():null;return this.put(i,B),r}match(t){return this.executeEngine(T.fromUTF16(t),0,m.UNANCHORED,0)!==null}matchWithGroup(t,e,s,o,i){return t instanceof W||(b.isByteArray(t)?t=$.utf8(t):t=$.utf16(t)),this.matchMachineInput(t,e,s,o,i)}matchMachineInput(t,e,s,o,i){if(e>s)return[!1,null];let B=t.isUTF16Encoding()?T.fromUTF16(t.asCharSequence(),0,s):T.fromUTF8(t.asBytes(),0,s),r=this.executeEngine(B,e,o,2*i);return r===null?[!1,null]:[!0,r]}matchUTF8(t){return this.executeEngine(T.fromUTF8(t),0,m.UNANCHORED,0)!==null}replaceAll(t,e){return this.replaceAllFunc(t,()=>e,2*t.length+1)}replaceFirst(t,e){return this.replaceAllFunc(t,()=>e,1)}replaceAllFunc(t,e,s){let o=0,i=0,B="",r=T.fromUTF16(t),a=0;for(;i<=t.length;){let c=this.executeEngine(r,i,m.UNANCHORED,2);if(c===null||c.length===0)break;B+=t.substring(o,c[0]),(c[1]>o||c[0]===0)&&(B+=e(t.substring(c[0],c[1])),a++),o=c[1];let d=r.step(i)&7;if(i+d>c[1]?i+=d:i+1>c[1]?i++:i=c[1],a>=s)break}return B+=t.substring(o),B}pad(t){if(t===null)return null;let e=(1+this.numSubexp)*2;if(t.lengtho){let o=[],i=t.endPos();e<0&&(e=i+1);let B=0,r=0,a=-1;for(;r=0&&(s[o]=t.slice(e[2*o],e[2*o+1]));return s}findUTF8SubmatchIndex(t){return this.pad(this.executeEngine(T.fromUTF8(t),0,m.UNANCHORED,this.prog.numCap))}findSubmatch(t){let e=this.executeEngine(T.fromUTF16(t),0,m.UNANCHORED,this.prog.numCap);if(e===null)return null;let s=new Array(1+this.numSubexp).fill(null);for(let o=0;o=0&&(s[o]=t.substring(e[2*o],e[2*o+1]));return s}findSubmatchIndex(t){return this.pad(this.executeEngine(T.fromUTF16(t),0,m.UNANCHORED,this.prog.numCap))}findAllUTF8(t,e){let s=this.allMatches(T.fromUTF8(t),e,o=>t.slice(o[0],o[1]));return s.length===0?null:s}findAllUTF8Index(t,e){let s=this.allMatches(T.fromUTF8(t),e,o=>o.slice(0,2));return s.length===0?null:s}findAll(t,e){let s=this.allMatches(T.fromUTF16(t),e,o=>t.substring(o[0],o[1]));return s.length===0?null:s}findAllIndex(t,e){let s=this.allMatches(T.fromUTF16(t),e,o=>o.slice(0,2));return s.length===0?null:s}findAllUTF8Submatch(t,e){let s=this.allMatches(T.fromUTF8(t),e,o=>{let i=new Array(o.length/2|0).fill(null);for(let B=0;B=0&&(i[B]=t.slice(o[2*B],o[2*B+1]));return i});return s.length===0?null:s}findAllUTF8SubmatchIndex(t,e){let s=this.allMatches(T.fromUTF8(t),e);return s.length===0?null:s}findAllSubmatch(t,e){let s=this.allMatches(T.fromUTF16(t),e,o=>{let i=new Array(o.length/2|0).fill(null);for(let B=0;B=0&&(i[B]=t.substring(o[2*B],o[2*B+1]));return i});return s.length===0?null:s}findAllSubmatchIndex(t,e){let s=this.allMatches(T.fromUTF16(t),e);return s.length===0?null:s}},be=class n{static UNANCHORED=m.UNANCHORED;static ANCHOR_START=m.ANCHOR_START;static ANCHOR_BOTH=m.ANCHOR_BOTH;constructor(t=n.UNANCHORED,e=0){this.anchor=t,this.jsFlags=e;let s=m.PERL;(e&q.DISABLE_UNICODE_GROUPS)!==0&&(s&=-129),(e&q.LOOKBEHINDS)!==0&&(s|=m.LOOKBEHIND),this.re2Flags=s,this.regexps=[],this.prog=null,this.dfa=null,this.dummyRe2=null}add(t){if(this.prog)throw new ht("Cannot add patterns after compile");let e=t;(this.jsFlags&q.CASE_INSENSITIVE)!==0&&(e=`(?i)${e}`),(this.jsFlags&q.DOTALL)!==0&&(e=`(?s)${e}`),(this.jsFlags&q.MULTILINE)!==0&&(e=`(?m)${e}`);let s=At.parse(e,this.re2Flags);return this.regexps.push(bt.simplify(s)),this.regexps.length-1}compile(){this.prog||(this.prog=wt.compileSet(this.regexps),this.dfa=new mt(this.prog),this.dummyRe2={prog:this.prog,cond:this.prog.startCond(),prefix:"",prefixRune:0,longest:!1})}match(t){this.prog||this.compile();let e=b.isByteArray(t)?T.fromUTF8(t):T.fromUTF16(t),s=m.UNANCHORED;this.anchor===n.ANCHOR_START?s=m.ANCHOR_START:this.anchor===n.ANCHOR_BOTH&&(s=m.ANCHOR_BOTH);let o=this.dfa.matchSet(e,0,s);if(o!==null)return o;let i=Bt.fromRE2(this.dummyRe2);return i.init(0),i.matchSet(e,0,s)}},Qt=class n{static isHexadecimal(t){return"0"<=t&&t<="9"||"A"<=t&&t<="F"||"a"<=t&&t<="f"}static translate(t){let e="";if(t instanceof RegExp&&(t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t=t.source),typeof t!="string")return t;let s="",o=!1,i=t.length;i===0&&(s="(?:)",o=!0);let B=!1,r=0;for(;r=65&&D<=90||D>=97&&D<=122){let y=D%32;s+="\\x",s+=(y>>4).toString(16).toUpperCase(),s+=(y&15).toString(16).toUpperCase(),r+=3,o=!0;continue}}s+="c",r+=2,o=!0;continue}case"u":{if(r+2=48&&h<=57||h>=65&&h<=90||h>=97&&h<=122){let y=b.charCount(h);s+=t.substring(r+1,r+1+y),r+=y+1,o=!0}else{s+="\\";let y=b.charCount(h);s+=t.substring(r+1,r+1+y),r+=y+1}continue}}}else if(c==="/"){s+="\\/",r+=1,o=!0;continue}else if(c==="[")B=!0;else if(c==="]")B=!1;else if(!B&&c==="("&&r+2)".includes(t[r+3])){s+="(?P<",r+=3,o=!0;continue}let d=t.codePointAt(r),p=b.charCount(d);s+=t.substring(r,r+p),r+=p}let a=o?s:t;return e.length>0?`(?${e})${a}`:a}},Ot=class n{static CASE_INSENSITIVE=q.CASE_INSENSITIVE;static DOTALL=q.DOTALL;static MULTILINE=q.MULTILINE;static DISABLE_UNICODE_GROUPS=q.DISABLE_UNICODE_GROUPS;static LONGEST_MATCH=q.LONGEST_MATCH;static LOOKBEHINDS=q.LOOKBEHINDS;static quote(t){return b.quoteMeta(t)}static quoteReplacement(t,e=!1){return Ct.quoteReplacement(t,e)}static translateRegExp(t){return Qt.translate(t)}static compile(t,e=0){let s=t;if((e&n.CASE_INSENSITIVE)!==0&&(s=`(?i)${s}`),(e&n.DOTALL)!==0&&(s=`(?s)${s}`),(e&n.MULTILINE)!==0&&(s=`(?m)${s}`),(e&~(n.MULTILINE|n.DOTALL|n.CASE_INSENSITIVE|n.DISABLE_UNICODE_GROUPS|n.LONGEST_MATCH|n.LOOKBEHINDS))!==0)throw new vt("Flags should only be a combination of MULTILINE, DOTALL, CASE_INSENSITIVE, DISABLE_UNICODE_GROUPS, LONGEST_MATCH, LOOKBEHINDS");let o=m.PERL;(e&n.DISABLE_UNICODE_GROUPS)!==0&&(o&=-129),(e&n.LOOKBEHINDS)!==0&&(o|=m.LOOKBEHIND);let i=new n(t,e);return i.re2Input=Yt.compileImpl(s,o,(e&n.LONGEST_MATCH)!==0),i}static matches(t,e){return n.compile(t).testExact(e)}static initTest(t,e,s){if(t==null)throw new Error("pattern is null");if(s==null)throw new Error("re2 is null");let o=new n(t,e);return o.re2Input=s,o}constructor(t,e){this.patternInput=t,this.flagsInput=e}reset(){this.re2Input.reset()}flags(){return this.flagsInput}pattern(){return this.patternInput}re2(){return this.re2Input}matches(t){return this.testExact(t)}matcher(t){return b.isByteArray(t)&&(t=$.utf8(t)),new Ct(this,t)}test(t){return b.isByteArray(t)?this.re2Input.matchUTF8(t):this.re2Input.match(t)}testExact(t){let e=b.isByteArray(t)?T.fromUTF8(t):T.fromUTF16(t);return this.re2Input.executeEngine(e,0,m.ANCHOR_BOTH,0)!==null}split(t,e=0){let s=this.matcher(t),o=[],i=0,B=0;for(;s.find();){if(B===0&&s.end()===0){B=s.end();continue}if(e>0&&o.length===e-1)break;if(B===s.start()){if(e===0){i+=1,B=s.end();continue}}else for(;i>0;)o.push(""),i-=1;o.push(s.substring(B,s.start())),B=s.end()}if(e===0&&B!==s.inputLength()){for(;i>0;)o.push(""),i-=1;o.push(s.substring(B,s.inputLength()))}return(e!==0||o.length===0)&&o.push(s.substring(B,s.inputLength())),o}toString(){return this.patternInput}programSize(){return this.re2Input.numberOfInstructions()}groupCount(){return this.re2Input.numberOfCapturingGroups()}namedGroups(){return this.re2Input.namedGroups}equals(t){return this===t?!0:t===null||this.constructor!==t.constructor?!1:this.flagsInput===t.flagsInput&&this.patternInput===t.patternInput}};var Xt=(n,t,e)=>{let s=n instanceof RegExp?Ge(n,e):n,o=t instanceof RegExp?Ge(t,e):t,i=s!==null&&o!=null&&ds(s,o,e);return i&&{start:i[0],end:i[1],pre:e.slice(0,i[0]),body:e.slice(i[0]+s.length,i[1]),post:e.slice(i[1]+o.length)}},Ge=(n,t)=>{let e=t.match(n);return e?e[0]:null},ds=(n,t,e)=>{let s,o,i,B,r,a=e.indexOf(n),c=e.indexOf(t,a+1),d=a;if(a>=0&&c>0){if(n===t)return[a,c];for(s=[],i=e.length;d>=0&&!r;){if(d===a)s.push(d),a=e.indexOf(n,d+1);else if(s.length===1){let p=s.pop();p!==void 0&&(r=[p,c])}else o=s.pop(),o!==void 0&&o=0?a:c}s.length&&B!==void 0&&(r=[i,B])}return r};var Le="\0SLASH"+Math.random()+"\0",Te="\0OPEN"+Math.random()+"\0",Vt="\0CLOSE"+Math.random()+"\0",Ne="\0COMMA"+Math.random()+"\0",xe="\0PERIOD"+Math.random()+"\0",ps=new RegExp(Le,"g"),gs=new RegExp(Te,"g"),hs=new RegExp(Vt,"g"),Cs=new RegExp(Ne,"g"),fs=new RegExp(xe,"g"),ms=/\\\\/g,Ds=/\\{/g,Es=/\\}/g,ys=/\\,/g,ws=/\\\./g,bs=1e5;function Wt(n){return isNaN(n)?n.charCodeAt(0):parseInt(n,10)}function As(n){return n.replace(ms,Le).replace(Ds,Te).replace(Es,Vt).replace(ys,Ne).replace(ws,xe)}function Os(n){return n.replace(ps,"\\").replace(gs,"{").replace(hs,"}").replace(Cs,",").replace(fs,".")}function He(n){if(!n)return[""];let t=[],e=Xt("{","}",n);if(!e)return n.split(",");let{pre:s,body:o,post:i}=e,B=s.split(",");B[B.length-1]+="{"+o+"}";let r=He(i);return i.length&&(B[B.length-1]+=r.shift(),B.push.apply(B,r)),t.push.apply(t,B),t}function ke(n,t={}){if(!n)return[];let{max:e=bs}=t;return n.slice(0,2)==="{}"&&(n="\\{\\}"+n.slice(2)),ct(As(n),e,!0).map(Os)}function Is(n){return"{"+n+"}"}function Fs(n){return/^-?0\d/.test(n)}function Gs(n,t){return n<=t}function Ls(n,t){return n>=t}function ct(n,t,e){let s=[],o=Xt("{","}",n);if(!o)return[n];let i=o.pre,B=o.post.length?ct(o.post,t,!1):[""];if(/\$$/.test(o.pre))for(let r=0;r=0;if(!c&&!d)return o.post.match(/,(?!,).*\}/)?(n=o.pre+"{"+o.body+Vt+o.post,ct(n,t,!0)):[n];let p;if(c)p=o.body.split(/\.\./);else if(p=He(o.body),p.length===1&&p[0]!==void 0&&(p=ct(p[0],t,!1).map(Is),p.length===1))return B.map(D=>o.pre+p[0]+D);let h;if(c&&p[0]!==void 0&&p[1]!==void 0){let D=Wt(p[0]),y=Wt(p[1]),E=Math.max(p[0].length,p[1].length),O=p.length===3&&p[2]!==void 0?Math.max(Math.abs(Wt(p[2])),1):1,A=Gs;y0){let z=new Array(j+1).join("0");L<0?H="-"+z+H.slice(1):H=z+H}}h.push(H)}}else{h=[];for(let D=0;D{if(typeof n!="string")throw new TypeError("invalid pattern");if(n.length>65536)throw new TypeError("pattern is too long")};var Ts={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},lt=n=>n.replace(/[[\]\\-]/g,"\\$&"),Ns=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Re=n=>n.join(""),Se=(n,t)=>{let e=t;if(n.charAt(e)!=="[")throw new Error("not in a brace expression");let s=[],o=[],i=e+1,B=!1,r=!1,a=!1,c=!1,d=e,p="";t:for(;ip?s.push(lt(p)+"-"+lt(E)):E===p&&s.push(lt(E)),p="",i++;continue}if(n.startsWith("-]",i+1)){s.push(lt(E+"-")),i+=2;continue}if(n.startsWith("-",i+1)){p=E,i+=2;continue}s.push(lt(E)),i++}if(de?t?n.replace(/\[([^/\\])\]/g,"$1"):n.replace(/((?!\\).|^)\[([^/\\])\]/g,"$1$2").replace(/\\([^/])/g,"$1"):t?n.replace(/\[([^/\\{}])\]/g,"$1"):n.replace(/((?!\\).|^)\[([^/\\{}])\]/g,"$1$2").replace(/\\([^/{}])/g,"$1");var P,xs=new Set(["!","?","+","*","@"]),Zt=n=>xs.has(n),ve=n=>Zt(n.type),Hs=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),ks=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),Rs=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),Me=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),Ss="(?!(?:^|/)\\.\\.?(?:$|/))",It="(?!\\.)",vs=new Set(["[","."]),Ms=new Set(["..","."]),Ps=new Set("().*{}+?[]^$\\!"),_s=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),$t="[^/]",Pe=$t+"*?",_e=$t+"+?",Js=0,et=class{type;#s;#o;#i=!1;#t=[];#e;#r;#c;#a=!1;#n;#B;#u=!1;id=++Js;get depth(){return(this.#e?.depth??-1)+1}[Symbol.for("nodejs.util.inspect.custom")](){return{"@@type":"AST",id:this.id,type:this.type,root:this.#s.id,parent:this.#e?.id,depth:this.depth,partsLength:this.#t.length,parts:this.#t}}constructor(t,e,s={}){this.type=t,t&&(this.#o=!0),this.#e=e,this.#s=this.#e?this.#e.#s:this,this.#n=this.#s===this?s:this.#s.#n,this.#c=this.#s===this?[]:this.#s.#c,t==="!"&&!this.#s.#a&&this.#c.push(this),this.#r=this.#e?this.#e.#t.length:0}get hasMagic(){if(this.#o!==void 0)return this.#o;for(let t of this.#t)if(typeof t!="string"&&(t.type||t.hasMagic))return this.#o=!0;return this.#o}toString(){return this.#B!==void 0?this.#B:this.type?this.#B=this.type+"("+this.#t.map(t=>String(t)).join("|")+")":this.#B=this.#t.map(t=>String(t)).join("")}#f(){if(this!==this.#s)throw new Error("should only call on root");if(this.#a)return this;this.toString(),this.#a=!0;let t;for(;t=this.#c.pop();){if(t.type!=="!")continue;let e=t,s=e.#e;for(;s;){for(let o=e.#r+1;!s.type&&otypeof e=="string"?e:e.toJSON()):[this.type,...this.#t.map(e=>e.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#s||this.#s.#a&&this.#e?.type==="!")&&t.push({}),t}isStart(){if(this.#s===this)return!0;if(!this.#e?.isStart())return!1;if(this.#r===0)return!0;let t=this.#e;for(let e=0;etypeof D!="string"),c=this.#t.map(D=>{let[y,E,O,A]=typeof D=="string"?P.#b(D,this.#o,a):D.toRegExpSource(t);return this.#o=this.#o||O,this.#i=this.#i||A,y}).join(""),d="";if(this.isStart()&&typeof this.#t[0]=="string"&&!(this.#t.length===1&&Ms.has(this.#t[0]))){let y=vs,E=e&&y.has(c.charAt(0))||c.startsWith("\\.")&&y.has(c.charAt(2))||c.startsWith("\\.\\.")&&y.has(c.charAt(4)),O=!e&&!t&&y.has(c.charAt(0));d=E?Ss:O?It:""}let p="";return this.isEnd()&&this.#s.#a&&this.#e?.type==="!"&&(p="(?:$|\\/)"),[d+c+p,V(c),this.#o=!!this.#o,this.#i]}let s=this.type==="*"||this.type==="+",o=this.type==="!"?"(?:(?!(?:":"(?:",i=this.#C(e);if(this.isStart()&&this.isEnd()&&!i&&this.type!=="!"){let a=this.toString(),c=this;return c.#t=[a],c.type=null,c.#o=void 0,[a,V(this.toString()),!1,!1]}let B=!s||t||e||!It?"":this.#C(!0);B===i&&(B=""),B&&(i=`(?:${i})(?:${B})*?`);let r="";if(this.type==="!"&&this.#u)r=(this.isStart()&&!e?It:"")+_e;else{let a=this.type==="!"?"))"+(this.isStart()&&!e&&!t?It:"")+Pe+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&B?")":this.type==="*"&&B?")?":`)${this.type}`;r=o+i+a}return[r,V(i),this.#o=!!this.#o,this.#i]}#p(){if(ve(this)){let t=0,e=!1;do{e=!0;for(let s=0;s{if(typeof e=="string")throw new Error("string type in extglob ast??");let[s,o,i,B]=e.toRegExpSource(t);return this.#i=this.#i||B,s}).filter(e=>!(this.isStart()&&this.isEnd())||!!e).join("|")}static#b(t,e,s=!1){let o=!1,i="",B=!1,r=!1;for(let a=0;ae?t?n.replace(/[?*()[\]{}]/g,"[$&]"):n.replace(/[?*()[\]\\{}]/g,"\\$&"):t?n.replace(/[?*()[\]]/g,"[$&]"):n.replace(/[?*()[\]\\]/g,"\\$&");var S=(n,t,e={})=>(ut(t),!e.nocomment&&t.charAt(0)==="#"?!1:new rt(t,e).match(n)),Us=/^\*+([^+@!?*[(]*)$/,Ks=n=>t=>!t.startsWith(".")&&t.endsWith(n),js=n=>t=>t.endsWith(n),qs=n=>(n=n.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(n)),Ys=n=>(n=n.toLowerCase(),t=>t.toLowerCase().endsWith(n)),Qs=/^\*+\.\*+$/,zs=n=>!n.startsWith(".")&&n.includes("."),Xs=n=>n!=="."&&n!==".."&&n.includes("."),Ws=/^\.\*+$/,Vs=n=>n!=="."&&n!==".."&&n.startsWith("."),Zs=/^\*+$/,$s=n=>n.length!==0&&!n.startsWith("."),to=n=>n.length!==0&&n!=="."&&n!=="..",eo=/^\?+([^+@!?*[(]*)?$/,so=([n,t=""])=>{let e=Ke([n]);return t?(t=t.toLowerCase(),s=>e(s)&&s.toLowerCase().endsWith(t)):e},oo=([n,t=""])=>{let e=je([n]);return t?(t=t.toLowerCase(),s=>e(s)&&s.toLowerCase().endsWith(t)):e},io=([n,t=""])=>{let e=je([n]);return t?s=>e(s)&&s.endsWith(t):e},no=([n,t=""])=>{let e=Ke([n]);return t?s=>e(s)&&s.endsWith(t):e},Ke=([n])=>{let t=n.length;return e=>e.length===t&&!e.startsWith(".")},je=([n])=>{let t=n.length;return e=>e.length===t&&e!=="."&&e!==".."},qe=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",Je={win32:{sep:"\\"},posix:{sep:"/"}},Bo=qe==="win32"?Je.win32.sep:Je.posix.sep;S.sep=Bo;var M=Symbol("globstar **");S.GLOBSTAR=M;var ro="[^/]",ao=ro+"*?",co="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",uo="(?:(?!(?:\\/|^)\\.).)*?",lo=(n,t={})=>e=>S(e,n,t);S.filter=lo;var K=(n,t={})=>Object.assign({},n,t),po=n=>{if(!n||typeof n!="object"||!Object.keys(n).length)return S;let t=S;return Object.assign((s,o,i={})=>t(s,o,K(n,i)),{Minimatch:class extends t.Minimatch{constructor(o,i={}){super(o,K(n,i))}static defaults(o){return t.defaults(K(n,o)).Minimatch}},AST:class extends t.AST{constructor(o,i,B={}){super(o,i,K(n,B))}static fromGlob(o,i={}){return t.AST.fromGlob(o,K(n,i))}},unescape:(s,o={})=>t.unescape(s,K(n,o)),escape:(s,o={})=>t.escape(s,K(n,o)),filter:(s,o={})=>t.filter(s,K(n,o)),defaults:s=>t.defaults(K(n,s)),makeRe:(s,o={})=>t.makeRe(s,K(n,o)),braceExpand:(s,o={})=>t.braceExpand(s,K(n,o)),match:(s,o,i={})=>t.match(s,o,K(n,i)),sep:t.sep,GLOBSTAR:M})};S.defaults=po;var Ye=(n,t={})=>(ut(n),t.nobrace||!/\{(?:(?!\{).)*\}/.test(n)?[n]:ke(n,{max:t.braceExpandMax}));S.braceExpand=Ye;var go=(n,t={})=>new rt(n,t).makeRe();S.makeRe=go;var ho=(n,t,e={})=>{let s=new rt(t,e);return n=n.filter(o=>s.match(o)),s.options.nonull&&!n.length&&n.push(t),n};S.match=ho;var Ue=/[?*]|[+@!]\(.*?\)|\[|\]/,Co=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),rt=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(t,e={}){ut(t),e=e||{},this.options=e,this.maxGlobstarRecursion=e.maxGlobstarRecursion??200,this.pattern=t,this.platform=e.platform||qe,this.isWindows=this.platform==="win32";let s="allowWindowsEscape";this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||e[s]===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=e.windowsNoMagicRoot!==void 0?e.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let e of t)if(typeof e!="string")return!0;return!1}debug(...t){}make(){let t=this.pattern,e=this.options;if(!e.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...i)=>console.error(...i)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(i=>this.slashSplit(i));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let o=this.globParts.map((i,B,r)=>{if(this.isWindows&&this.windowsNoMagicRoot){let a=i[0]===""&&i[1]===""&&(i[2]==="?"||!Ue.test(i[2]))&&!Ue.test(i[3]),c=/^[a-z]:/i.test(i[0]);if(a)return[...i.slice(0,4),...i.slice(4).map(d=>this.parse(d))];if(c)return[i[0],...i.slice(1).map(d=>this.parse(d))]}return i.map(a=>this.parse(a))});if(this.debug(this.pattern,o),this.set=o.filter(i=>i.indexOf(!1)===-1),this.isWindows)for(let i=0;i=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):e>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(e=>{let s=-1;for(;(s=e.indexOf("**",s+1))!==-1;){let o=s;for(;e[o+1]==="**";)o++;o!==s&&e.splice(s,o-s)}return e})}levelOneOptimize(t){return t.map(e=>(e=e.reduce((s,o)=>{let i=s[s.length-1];return o==="**"&&i==="**"?s:o===".."&&i&&i!==".."&&i!=="."&&i!=="**"?(s.pop(),s):(s.push(o),s)},[]),e.length===0?[""]:e))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let o=1;oo&&s.splice(o+1,B-o);let r=s[o+1],a=s[o+2],c=s[o+3];if(r!==".."||!a||a==="."||a===".."||!c||c==="."||c==="..")continue;e=!0,s.splice(o,1);let d=s.slice(0);d[o]="**",t.push(d),o--}if(!this.preserveMultipleSlashes){for(let B=1;Be.length)}partsMatch(t,e,s=!1){let o=0,i=0,B=[],r="";for(;o=2&&(t=this.levelTwoFileOptimize(t)),e.includes(M)?this.#s(t,e,s,o,i):this.#i(t,e,s,o,i)}#s(t,e,s,o,i){let B=e.indexOf(M,i),r=e.lastIndexOf(M),[a,c,d]=s?[e.slice(i,B),e.slice(B+1),[]]:[e.slice(i,B),e.slice(B+1,r),e.slice(r+1)];if(a.length){let G=t.slice(o,o+a.length);if(!this.#i(G,a,s,0,0))return!1;o+=a.length,i+=a.length}let p=0;if(d.length){if(d.length+o>t.length)return!1;let G=t.length-d.length;if(this.#i(t,d,s,G,0))p=d.length;else{if(t[t.length-1]!==""||o+d.length===t.length||(G--,!this.#i(t,d,s,G,0)))return!1;p=d.length+1}}if(!c.length){let G=!!p;for(let N=o;N{let c=a.map(p=>{if(p instanceof RegExp)for(let h of p.flags.split(""))o.add(h);return typeof p=="string"?Co(p):p===M?M:p._src});c.forEach((p,h)=>{let D=c[h+1],y=c[h-1];p!==M||y===M||(y===void 0?D!==void 0&&D!==M?c[h+1]="(?:\\/|"+s+"\\/)?"+D:c[h]=s:D===void 0?c[h-1]=y+"(?:\\/|\\/"+s+")?":D!==M&&(c[h-1]=y+"(?:\\/|\\/"+s+"\\/)"+D,c[h+1]=M))});let d=c.filter(p=>p!==M);if(this.partial&&d.length>=1){let p=[];for(let h=1;h<=d.length;h++)p.push(d.slice(0,h).join("/"));return"(?:"+p.join("|")+")"}return d.join("/")}).join("|"),[B,r]=t.length>1?["(?:",")"]:["",""];i="^"+B+i+r+"$",this.partial&&(i="^(?:\\/|"+B+i.slice(1,-1)+r+")$"),this.negate&&(i="^(?!"+i+").+$");try{this.regexp=new RegExp(i,[...o].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return t==="";if(t==="/"&&e)return!0;let s=this.options;this.isWindows&&(t=t.split("\\").join("/"));let o=this.slashSplit(t);this.debug(this.pattern,"split",o);let i=this.set;this.debug(this.pattern,"set",i);let B=o[o.length-1];if(!B)for(let r=o.length-2;!B&&r>=0;r--)B=o[r];for(let r of i){let a=o;if(s.matchBase&&r.length===1&&(a=[B]),this.matchOne(a,r,e))return s.flipNegate?!0:!this.negate}return s.flipNegate?!1:this.negate}static defaults(t){return S.defaults(t).Minimatch}};S.AST=et;S.Minimatch=rt;S.escape=te;S.unescape=V;function fo(n){for(var t=[],e=0;e=48&&B<=57||B>=65&&B<=90||B>=97&&B<=122||B===95){o+=n[i++];continue}break}if(!o)throw new TypeError("Missing parameter name at ".concat(e));t.push({type:"NAME",index:e,value:o}),e=i;continue}if(s==="("){var r=1,a="",i=e+1;if(n[i]==="?")throw new TypeError('Pattern cannot start with "?" at '.concat(i));for(;i-1)return!0}return!1},E=function(_){var k=r[r.length-1],Y=_||(k&&typeof k=="string"?k:"");if(k&&!Y)throw new TypeError('Must have text between two parameters, missing text after "'.concat(k.name,'"'));return!Y||y(Y)?"[^".concat(Z(B),"]+?"):"(?:(?!".concat(Z(Y),")[^").concat(Z(B),"])+?")};c)?(?!\?)/g,s=0,o=e.exec(n.source);o;)t.push({name:o[1]||s++,prefix:"",suffix:"",modifier:"",pattern:""}),o=e.exec(n.source);return n}function Do(n,t,e){var s=n.map(function(o){return se(o,t,e).source});return new RegExp("(?:".concat(s.join("|"),")"),Qe(e))}function Eo(n,t,e){return yo(ee(n,e),t,e)}function yo(n,t,e){e===void 0&&(e={});for(var s=e.strict,o=s===void 0?!1:s,i=e.start,B=i===void 0?!0:i,r=e.end,a=r===void 0?!0:r,c=e.encode,d=c===void 0?function(k){return k}:c,p=e.delimiter,h=p===void 0?"/#?":p,D=e.endsWith,y=D===void 0?"":D,E="[".concat(Z(y),"]|$"),O="[".concat(Z(h),"]"),A=B?"^":"",G=0,N=n;G-1:st===void 0;o||(A+="(?:".concat(O,"(?=").concat(E,"))?")),_||(A+="(?=".concat(O,"|").concat(E,")"))}return new RegExp(A,Qe(e))}function se(n,t,e){return n instanceof RegExp?mo(n,t):Array.isArray(n)?Do(n,t,e):Eo(n,t,e)}var wo={hosting:{public:"_site",cleanUrls:!0,trailingSlash:!1,ignore:["firebase.json","**/.*","tool","src","**/node_modules/**"],rewrites:[],redirects:[{regex:"^/(flutter(/.*)?)",destination:"https://api.flutter-io.cn/:1",type:301},{regex:"^/(objcdoc(/.*)?)",destination:"https://api.flutter-io.cn/:1",type:301},{regex:"^/(javadoc(/.*)?)",destination:"https://api.flutter-io.cn/:1",type:301},{regex:"(.*)\\.html$",destination:":1",type:301},{regex:"(.*)\\.$",destination:":1",type:301},{source:"/ads",destination:"https://flutter.cn/monetization",type:301},{source:"/community",destination:"https://flutter.cn/community",type:301},{source:"/gallery",destination:"https://github.com/flutter/gallery#flutter-gallery",type:301},{source:"/showcase",destination:"https://flutter.cn/showcase",type:301},{source:"/support",destination:"https://flutter.cn/community",type:301},{source:"/docs/:rest*",destination:"/:rest*",type:301},{source:"/subscribe/**",destination:"https://flutter.cn#newsletter",type:301},{source:"/accessibility",destination:"/ui/accessibility",type:301},{source:"/adaptations",destination:"/platform-integration/platform-adaptations",type:301},{source:"/adaptive*",destination:"/ui/adaptive-responsive",type:301},{source:"/ai-best-practices",destination:"/ai/best-practices",type:301},{source:"/ai-best-practices/:rest*",destination:"/ai/best-practices/:rest*",type:301},{source:"/ai-toolkit",destination:"/ai/ai-toolkit",type:301},{source:"/ai-toolkit/:rest*",destination:"/ai/ai-toolkit/:rest*",type:301},{source:"/ai/flutter-ext-for-gemini",destination:"/ai/gemini-cli-extension",type:301},{source:"/ai/best-practices/tool-calls-aka-function-calls",destination:"/ai/best-practices/tool-calls",type:301},{source:"/ai/antigravity",destination:"/ai/coding-assistants",type:301},{source:"/ai/gemini-code-assist",destination:"/ai/coding-assistants",type:301},{source:"/ai/firebase-ai-logic",destination:"https://firebase.google.cn/docs/ai-logic/get-started?platform=flutter",type:301},{source:"/android-release",destination:"/deployment/android",type:301},{source:"/animations",destination:"/ui/animations",type:301},{source:"/animations/:rest*",destination:"/ui/animations/:rest*",type:301},{source:"/assets-and-images",destination:"/ui/assets/assets-and-images",type:301},{source:"/bootstrap-into-dart",destination:"https://dart.cn/learn",type:301},{source:"/bug-reports",destination:"/resources/bug-reports",type:301},{source:"/cd",destination:"/deployment/cd",type:301},{source:"/code-of-conduct",destination:"https://github.com/flutter/flutter/blob/main/CODE_OF_CONDUCT.md",type:301},{source:"/custom-fonts",destination:"/cookbook/design/fonts",type:301},{source:"/data-and-backend/json",destination:"/data-and-backend/serialization/json",type:301},{source:"/debugging",destination:"/testing/debugging",type:301},{source:"/deferred-components",destination:"/perf/deferred-components",type:301},{source:"/desktop",destination:"/platform-integration/desktop",type:301},{source:"/desktop/windows",destination:"/platform-integration/windows/building",type:301},{source:"/desktop/macos",destination:"/platform-integration/macos/building",type:301},{source:"/desktop/linux",destination:"/platform-integration/linux/building",type:301},{source:"/perf/rendering/*",destination:"/perf",type:301},{source:"/perf/shader",destination:"/perf/rendering-performance",type:301},{source:"/developing-packages",destination:"/packages-and-plugins/developing-packages",type:301},{source:"/development",destination:"/",type:301},{source:"/development/:rest*",destination:"/:rest*",type:301},{source:"/devtools/:rest*",destination:"/tools/devtools/:rest*",type:301},{source:"/download",destination:"/install",type:301},{source:"/downloads/:resource*",destination:"/resources/:resource*",type:301},{source:"/f/dart-devtools-survey-metadata.json",destination:"https://storage.googleapis.com/flutter-uxr/surveys/devtools-survey-metadata.json",type:301},{source:"/f/flutter-survey-metadata.json",destination:"https://storage.googleapis.com/flutter-uxr/surveys/flutter-survey-metadata.json",type:301},{source:"/faq",destination:"/resources/faq",type:301},{source:"/fastlane-cd",destination:"/deployment/cd#fastlane",type:301},{source:"/flutter-for-:platform*",destination:"/flutter-for/:platform*-devs",type:301},{source:"/formatting",destination:"/tools/formatting",type:301},{source:"/gestures",destination:"/ui/advanced/gestures",type:301},{source:"/glossary",destination:"/resources/glossary",type:301},{source:"/glossary/:entry",destination:"/resources/glossary#:entry",type:301},{source:"/hot-reload",destination:"/tools/hot-reload",type:301},{source:"/ide-setup",destination:"/tools/editors",type:301},{source:"/images/catalog-widget-placeholder.png",destination:"/assets/images/docs/catalog-widget-placeholder.png",type:301},{source:"/inspector",destination:"/tools/devtools/inspector",type:301},{source:"/intellij-ide",destination:"/tools/android-studio",type:301},{source:"/intellij-setup",destination:"/tools/android-studio#setup",type:301},{source:"/ios-release",destination:"/deployment/ios",type:301},{source:"/json",destination:"/data-and-backend/serialization/json",type:301},{source:"/learn/tutorial",destination:"/learn/pathway/tutorial",type:301},{source:"/learn/tutorial/:rest*",destination:"/learn/pathway/tutorial/:rest*",type:301},{source:"/ui/media",destination:"/ui/assets",type:301},{source:"/ui/media/:rest*",destination:"/ui/assets/:rest*",type:301},{source:"/networking",destination:"/data-and-backend/networking",type:301},{source:"/overview",destination:"/resources/architectural-overview",type:301},{source:"/platform-channels",destination:"/platform-integration/platform-channels",type:301},{source:"/packages-and-plugins/happy-paths",destination:"/packages-and-plugins/favorites",type:301},{source:"/packages-and-plugins/happy-paths/recommended",destination:"/packages-and-plugins/favorites",type:301},{source:"/platform-plugins*",destination:"/packages-and-plugins/using-packages",type:301},{source:"/platform-services",destination:"/platform-integration/platform-channels",type:301},{source:"/predictive-back",destination:"/release/breaking-changes/android-predictive-back#migration-guide",type:301},{source:"/reading-writing-files",destination:"/cookbook/persistence/reading-writing-files",type:301},{source:"/reference/tutorials",destination:"/reference/learning-resources",type:301},{source:"/release-notes",destination:"/release/release-notes",type:301},{source:"/release-notes/:version*",destination:"/release/release-notes/release-notes-:version*",type:301},{source:"/responsive*",destination:"/ui/layout/responsive/adaptive-responsive",type:301},{source:"/routing-and-navigation",destination:"/ui/navigation",type:301},{source:"/sdk-archive",destination:"/install/archive",type:301},{source:"/setup-:os*",destination:"/install",type:301},{source:"/setup",destination:"/install",type:301},{source:"/technical-overview",destination:"/resources/architectural-overview",type:301},{source:"/text-input",destination:"/cookbook/forms/text-input",type:301},{source:"/tutorial",destination:"/learn/pathway/tutorial",type:301},{source:"/tutorials",destination:"/reference/learning-resources",type:301},{source:"/unbounded-constraints",destination:"/ui/layout/constraints#unbounded",type:301},{source:"/ui-performance",destination:"/perf/ui-performance",type:301},{source:"/ui/widgets-intro",destination:"/ui",type:301},{source:"/upgrading",destination:"/install/upgrade",type:301},{source:"/using-ide-vscode",destination:"/tools/vs-code",type:301},{source:"/using-ide",destination:"/tools/android-studio",type:301},{source:"/using-packages",destination:"/packages-and-plugins/using-packages",type:301},{source:"/web-analogs",destination:"/flutter-for/web-devs",type:301},{source:"/webflutter.dev/web",destination:"/web",type:301},{source:"/widgets-intro",destination:"/ui",type:301},{source:"/widgets",destination:"/ui/widgets/catalog",type:301},{source:"/widgets/:rest*",destination:"/ui/widgets/:rest*",type:301},{source:"/accessibility-and-localization",destination:"/ui/accessibility",type:301},{source:"/accessibility-and-localization/internationalization",destination:"/ui/internationalization",type:301},{source:"/accessibility-and-localization/:rest*",destination:"/ui/accessibility",type:301},{source:"/add-to-app/android/add-splash-screen",destination:"/platform-integration/android/splash-screen",type:301},{source:"/codelabs",destination:"/reference/learning-resources",type:301},{source:"/codelabs/layout-basics",destination:"/ui/layout",type:301},{source:"/codelabs/explicit-animations",destination:"/ui/animations/tutorial",type:301},{source:"/codelabs/implicit-animations",destination:"https://codelabs.developers.google.cn/advanced-flutter-animations",type:301},{source:"/cookbook",destination:"/reference/learning-resources",type:301},{source:"/cookbook/games/google-mobile-ads",destination:"/cookbook/plugins/google-mobile-ads",type:301},{source:"/cookbook/images/cached-images",destination:"/cookbook/images/network-image",type:301},{source:"/cookbook/effects/gradient-bubbles",destination:"/reference/learning-resources",type:301},{source:"/cookbook/effects/photo-filter-carousel",destination:"/reference/learning-resources",type:301},{source:"/cookbook/effects/typing-indicator",destination:"/reference/learning-resources",type:301},{source:"/cookbook/networking/named-routes",destination:"/cookbook/navigation/named-routes",type:301},{source:"/cookbook/testing/integration-test-introduction",destination:"/cookbook/testing/integration",type:301},{source:"/cookbook/testing/integration-test-profiling",destination:"/cookbook/testing/integration/profiling",type:301},{source:"/cookbook/testing/integration-test-scrolling",destination:"/cookbook/testing/integration/scrolling",type:301},{source:"/cookbook/testing/mocking",destination:"/cookbook/testing/unit/mocking",type:301},{source:"/cookbook/testing/unit-test",destination:"/cookbook/testing/unit/introduction",type:301},{source:"/cookbook/testing/widget-test-finders",destination:"/cookbook/testing/widget/finders",type:301},{source:"/cookbook/testing/widget-test-introduction",destination:"/cookbook/testing/widget",type:301},{source:"/cookbook/testing/widget-test-tap-drag",destination:"/cookbook/testing/widget/tap-drag",type:301},{source:"/deployment/fastlane-cd",destination:"/deployment/cd#fastlane",type:301},{source:"/get-started",destination:"/install",type:301},{source:"/get-started/custom",destination:"/install/custom",type:301},{source:"/get-started/codelab",destination:"/learn/pathway",type:301},{source:"/get-started/codelab-web",destination:"/learn",type:301},{source:"/get-started/editor",destination:"/tools/editors",type:301},{source:"/get-started/flutter-for",destination:"/learn",type:301},{source:"/get-started/flutter-for/ios-devs",destination:"/flutter-for/swiftui-devs",type:301},{source:"/get-started/flutter-for/:rest*",destination:"/flutter-for/:rest*",type:301},{source:"/get-started/fwe/*",destination:"/learn/pathway",type:301},{source:"/get-started/fundamentals",destination:"/learn/pathway",type:301},{source:"/get-started/fundamentals/*",destination:"/learn/pathway",type:301},{source:"/get-started/install",destination:"/install",type:301},{source:"/get-started/install/help",destination:"/install/troubleshoot",type:301},{source:"/get-started/install/*",destination:"/install",type:301},{source:"/get-started/learn-flutter",destination:"/learn",type:301},{source:"/get-started/learn-more",destination:"/learn",type:301},{source:"/get-started/test-drive*",destination:"/learn/pathway",type:301},{source:"/get-started/uninstall",destination:"/install/uninstall",type:301},{source:"/get-started/web",destination:"/platform-integration/web/building",type:301},{source:"/get-started/quick",destination:"/install/quick",type:301},{source:"/ios-14",destination:"/platform-integration/ios/ios-debugging",type:301},{source:"/ios-project-migration",destination:"https://web.archive.org/web/20220614103526/https://docs.flutter.dev/development/ios-project-migration",type:301},{source:"/layout",destination:"/ui/layout",type:301},{source:"/learn/learning-resources",destination:"/reference/learning-resources",type:301},{source:"/material-3-migration",destination:"/release/breaking-changes/material-3-migration",type:301},{source:"/packages-and-plugins/androidx-compatibility",destination:"/platform-integration/android/androidx-migration",type:301},{source:"/packages-and-plugins/c-interop",destination:"/platform-integration/android/c-interop",type:301},{source:"/packages-and-plugins/plugins-in-tests",destination:"/testing/plugins-in-tests",type:301},{source:"/packages-and-plugins/plugin-api-migration",destination:"/release/breaking-changes/plugin-api-migration",type:301},{source:"/platform-integration/android/androidx-migration",destination:"/release/breaking-changes/androidx-migration",type:301},{source:"/platform-integration/android/install-android",destination:"/platform-integration/android/setup",type:301},{source:"/platform-integration/android/install-android/:rest*",destination:"/platform-integration/android/setup",type:301},{source:"/platform-integration/android/splash-screen-migration",destination:"/release/breaking-changes/splash-screen-migration",type:301},{source:"/platform-integration/c-interop",destination:"/platform-integration",type:301},{source:"/platform-integration/ios-app-clip",destination:"/platform-integration/ios/ios-app-clip",type:301},{source:"/platform-integration/ios/install-ios",destination:"/platform-integration/ios/setup",type:301},{source:"/platform-integration/ios/install-ios/:rest*",destination:"/platform-integration/ios/setup",type:301},{source:"/platform-integration/ios/splash-screen",destination:"/platform-integration/ios/launch-screen",type:301},{source:"/platform-integration/linux/install-linux",destination:"/platform-integration/linux/setup",type:301},{source:"/platform-integration/linux/install-linux/:rest*",destination:"/platform-integration/linux/setup",type:301},{source:"/platform-integration/macos/install-macos",destination:"/platform-integration/macos/setup",type:301},{source:"/platform-integration/macos/install-macos/:rest*",destination:"/platform-integration/macos/setup",type:301},{source:"/platform-integration/platform-adaptations",destination:"/ui/adaptive-responsive/platform-adaptations",type:301},{source:"/platform-integration/platform-views",destination:"/platform-integration/android/platform-views",type:301},{source:"/platform-integration/web-images",destination:"/platform-integration/web/web-images",type:301},{source:"/platform-integration/web/initialization-legacy",destination:"/platform-integration/web/initialization",type:301},{source:"/platform-integration/web/install-web",destination:"/platform-integration/web/setup",type:301},{source:"/platform-integration/web/bootstrapping",destination:"/platform-integration/web/initialization",type:301},{source:"/platform-integration/windows/install-windows",destination:"/platform-integration/windows/setup",type:301},{source:"/platform-integration/windows/install-windows/:rest*",destination:"/platform-integration/windows/setup",type:301},{source:"/platform-integration/windows/run-loop-migration",destination:"/release/breaking-changes/windows-run-loop",type:301},{source:"/platform-integration/windows/version-migration",destination:"/release/breaking-changes/windows-version-information",type:301},{source:"/platform-integration/windows/dark-mode-migration",destination:"/release/breaking-changes/windows-dark-mode",type:301},{source:"/reference/widgets/:catalogpage+",destination:"/ui/widgets/:catalogpage+",type:301},{source:"/reference/widgets/widgetindex",destination:"/reference/widgets",type:301},{source:"/release/release-notes/changelogs/changelog-1.17.0",destination:"/release/release-notes/release-notes-1.17.0",type:301},{source:"/release/release-notes/supported-platforms",destination:"/reference/supported-platforms",type:301},{source:"/release/breaking-changes/can-request-focus",destination:"https://github.com/flutter/flutter/issues/149067",type:301},{source:"/release/breaking-changes/scrollable_alert_dialog",destination:"/release/breaking-changes/scrollable-alert-dialog",type:301},{source:"/release/breaking-changes/win_lifecycle_process_function",destination:"/release/breaking-changes/win-lifecycle-process-function",type:301},{source:"/release/archive",destination:"/install/archive",type:301},{source:"/release/upgrade",destination:"/install/upgrade",type:301},{source:"/resources/ai-overview",destination:"/ai/create-with-ai",type:301},{source:"/resources/books",destination:"/reference/learning-resources",type:301},{source:"/resources/bootstrap-into-dart",destination:"https://dart.cn/learn",type:301},{source:"/resources/compatibility",destination:"/release/compatibility-policy",type:301},{source:"/resources/dart-swift-concurrency",destination:"/flutter-for/dart-swift-concurrency",type:301},{source:"/resources/platform-adaptations",destination:"/platform-integration/platform-adaptations",type:301},{source:"/resources/rendering",destination:"/resources/architectural-overview#rendering-and-layout",type:301},{source:"/resources/security-false-positives",destination:"/reference/security-false-positives",type:301},{source:"/resources/technical-overview",destination:"/resources/architectural-overview",type:301},{source:"/resources/design-docs",destination:"https://github.com/flutter/flutter/issues?q=is%3Aissue%20label%3A%22design%20doc%22",type:301},{source:"/resources/Flutter-IntelliJ-cheat-sheet-MacOS.pdf",destination:"/tools/android-studio",type:301},{source:"/resources/Flutter-IntelliJ-cheat-sheet-WindowsLinux.pdf",destination:"/tools/android-studio",type:301},{source:"/testing/best-practices",destination:"/perf/best-practices",type:301},{source:"/testing/integration-tests/migration",destination:"/release/breaking-changes/flutter-driver-migration",type:301},{source:"/testing/ui-performance",destination:"/perf/ui-performance",type:301},{source:"/tools/devtools/code-size",destination:"/tools/devtools/app-size",type:301},{source:"/tools/devtools/codeSize",destination:"/tools/devtools/app-size",type:301},{source:"/tools/devtools/overview",destination:"/tools/devtools",type:301},{source:"/tools/devtools/timeline",destination:"/tools/devtools/performance",type:301},{source:"/tools/ide",destination:"/tools/vs-code",type:301},{source:"/tools/ide/android-studio",destination:"/tools/android-studio",type:301},{source:"/tools/ide/vs-code",destination:"/tools/vs-code",type:301},{source:"/tools/inspector",destination:"/tools/devtools/inspector",type:301},{source:"/tools/sdk/archive",destination:"/install/archive",type:301},{source:"/tools/sdk/overview",destination:"/tools/sdk",type:301},{source:"/tools/sdk/releases",destination:"/install/archive",type:301},{source:"/tools/sdk/release-notes",destination:"/release/release-notes",type:301},{source:"/tools/sdk/release-notes/:rest*",destination:"/release/release-notes/:rest*",type:301},{source:"/tools/sdk/release-notes/supported-platforms",destination:"/reference/supported-platforms",type:301},{source:"/tools/sdk/upgrading",destination:"/install/upgrade",type:301},{source:"/tools/web-renderers",destination:"/platform-integration/web/renderers",type:301},{source:"/tutorials/animation",destination:"/ui/animations/tutorial",type:301},{source:"/tutorials/interactive",destination:"/ui/interactive",type:301},{source:"/tutorials/internationalization",destination:"/ui/internationalization",type:301},{source:"/tutorials/layout",destination:"/ui/layout",type:301},{source:"/ui/accessibility-and-internationalization",destination:"/ui/accessibility",type:301},{source:"/ui/accessibility-and-internationalization/accessibility",destination:"/ui/accessibility",type:301},{source:"/ui/accessibility-and-internationalization/internationalization",destination:"/ui/internationalization",type:301},{source:"/ui/accessibility-and-localization",destination:"/ui/accessibility",type:301},{source:"/ui/accessibility-and-localization/:rest*",destination:"/ui/accessibility",type:301},{source:"/ui/advanced",destination:"/ui",type:301},{source:"/ui/advanced/actions_and_shortcuts",destination:"/ui/interactivity/actions-and-shortcuts",type:301},{source:"/ui/advanced/actions-and-shortcuts",destination:"/ui/interactivity/actions-and-shortcuts",type:301},{source:"/ui/advanced/focus",destination:"/ui/interactivity/focus",type:301},{source:"/ui/advanced/gestures",destination:"/ui/interactivity/gestures",type:301},{source:"/ui/advanced/shaders",destination:"/ui/design/graphics/fragment-shaders",type:301},{source:"/ui/advanced/slivers",destination:"/ui/layout/scrolling/slivers",type:301},{source:"/ui/advanced/splash-screen",destination:"/platform-integration/android/splash-screen",type:301},{source:"/ui/advanced/typography",destination:"/ui/design/text/typography",type:301},{source:"/ui/assets-and-images",destination:"/ui/assets/assets-and-images",type:301},{source:"/ui/building-adaptive-apps",destination:"/ui/adaptive-responsive",type:301},{source:"/ui/interactive",destination:"/ui/interactivity",type:301},{source:"/ui/internationalization/internationalization",destination:"/ui/internationalization",type:301},{source:"/ui/layout/adaptive-responsive",destination:"/ui/adaptive-responsive",type:301},{source:"/ui/layout/box-constraints",destination:"/ui/layout/constraints#unbounded",type:301},{source:"/ui/layout/building-adaptive-apps",destination:"/ui/adaptive-responsive",type:301},{source:"/ui/layout/responsive",destination:"/ui/adaptive-responsive",type:301},{source:"/ui/layout/responsive/adaptive-responsive",destination:"/ui/adaptive-responsive",type:301},{source:"/ui/material",destination:"/ui/design/material",type:301},{source:"/ui/material3-updates",destination:"/ui/design/material",type:301},{source:"/ui/scrolling",destination:"/ui/layout/scrolling",type:301},{source:"/ui/scrolling/:rest*",destination:"/ui/layout/scrolling/:rest*",type:301},{source:"/ui/splash-screen",destination:"/platform-integration/android/splash-screen",type:301},{source:"/ui/splash-screen/android-splash-screen",destination:"/platform-integration/android/splash-screen",type:301},{source:"/ui/widgets/catalog",destination:"/ui/widgets",type:301},{source:"/ui/widgets/widgetindex",destination:"/reference/widgets",type:301},{source:"/web",destination:"/platform-integration/web",type:301},{source:"/whats-new-archive",destination:"/release/whats-new",type:301},{source:"/whats-new",destination:"/release/whats-new",type:301},{source:"/testing/oem-debuggers",destination:"/testing/native-debugging",type:301},{source:"/adoptawidget",destination:"https://github.com/flutter/flutter/blob/main/CONTRIBUTING.md",type:301},{source:"/apprentice-giveaway",destination:"https://www.youtube.com/playlist?list=PL4dBIh1xps-HAaadBRWQobCO_IJ4gMOG2",type:301},{source:"/clock",destination:"https://blog.flutter.dev/its-time-the-flutter-clock-contest-results-dcebe2eb3957",type:301},{source:"/create",destination:"https://blog.flutter.dev/the-flutter-create-winners-are-40980f2d20b3",type:301},{source:"/assets/images/docs/intellij/hot-reload.gif",destination:"https://raw.githubusercontent.com/flutter/website/main/src/assets/images/docs/tools/android-studio/hot-reload.gif",type:301},{source:"/brick-breaker",destination:"https://codelabs.developers.google.cn/codelabs/flutter-flame-brick-breaker",type:301},{source:"/catalog/samples",destination:"https://flutter.github.io/samples/#",type:301},{source:"/catalog/samples/*",destination:"https://flutter.github.io/samples/#",type:301},{source:"/chat",destination:"https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md",type:302},{source:"/custom-deferred-components",destination:"https://github.com/flutter/flutter/wiki/Deferred-Components#custom-implementations",type:301},{source:"/deferred-components-wiki",destination:"https://github.com/flutter/flutter/wiki/Deferred-Components",type:301},{source:"/design-principles",destination:"https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md",type:301},{source:"/fully-deferred-flutter",destination:"https://github.com/flutter/flutter/wiki/Deferred-Components#fully-deferring-flutter-in-add-to-app",type:301},{source:"/null-safety",destination:"https://dart.cn/null-safety",type:301},{source:"/privacy",destination:"https://www.google.com/intl/en/policies/privacy",type:301},{source:"/report-jank",destination:"https://github.com/flutter/flutter/issues/74833",type:301},{source:"/research-optout",destination:"https://docs.google.com/forms/d/e/1FAIpQLSeG2Nhj0YQkr3m75P74Zb9G-v7zgNhAE9arCyig-a5B1A8uDw/viewform?usp=sf_link",type:301},{source:"/research-signup",destination:"https://docs.google.com/forms/d/e/1FAIpQLSe0i4De809KXVCdljGKrjMj3lxhuzbuFKCtY5PEQPCYtGxFMg/viewform?usp=sf_link",type:301},{source:"/resources/design-principles",destination:"https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md",type:301},{source:"/style-guide*",destination:"https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md",type:301},{source:"/youtube",destination:"https://youtube.com/@flutterdev",type:301},{source:"/go/2D-Foundation",destination:"https://docs.google.com/document/d/1C2hAq-gMAIx4Cbym7EMhVAcPZ2hmNxlgijpYmgTpmUU/edit?usp=sharing",type:301},{source:"/go/a11y-links",destination:"https://docs.google.com/document/d/1FxzANiyJFkoRxJ7V2IejpfB5DX19gxiJps-8N2oUW_U/edit#",type:301},{source:"/go/a11y-text-attributes",destination:"https://docs.google.com/document/d/1vhbwxFOTRTUvW2C_onFffEH5Fn2pAfMQDyv-gekias0/edit?usp=sharing&resourcekey=0-ChQvjIoWYO7jXcaCXMj5Qw",type:301},{source:"/go/actions-and-shortcuts-design-revision",destination:"https://docs.google.com/document/d/1A9yald55O_C6Weqp4tOtyMisfOC1ZC0UMq7Yc-pNfVQ/edit",type:301},{source:"/go/adaptive",destination:"/ui/adaptive-responsive",type:301},{source:"/go/adaptive-layout-foldables",destination:"https://docs.google.com/document/d/1qhrpTWYs5f67X8v32NCCNTRMIjSrVHuaMEFAul-Q_Ms/edit?usp=sharing",type:301},{source:"/go/add-missing-features-to-selection-controls",destination:"https://docs.google.com/document/d/1QizXwBiO-2REIcEovl5pK06BaLPOWYmNwOE5jactJZA/edit?usp=sharing&resourcekey=0-1pb9mJiAq29Gesmt25GAug",type:301},{source:"/go/add-to-app-samples",destination:"https://docs.google.com/document/d/1M_GsAL8C1NxbsmzI35w2Th1wvX1KMoPHY5yeeNbzjY0",type:301},{source:"/go/admob-banner-recycle-perf",destination:"https://docs.google.com/document/d/1A5IokVzA770_9EnatIV-rd4Zf51p06nR4i7hM8K3E_o/edit?tab=t.0",type:301},{source:"/go/agentic-apps-campaign",destination:"https://flutter.dev/events/building-agentic-apps",type:301},{source:"/go/agentive-apps-campaign",destination:"https://flutter.dev/events/building-agentic-apps",type:301},{source:"/go/allow-datatable-row-height-to-expand",destination:"https://docs.google.com/document/d/1qr1IgaU2z9eaM6zCa4u-Q8kJD5Zq7IcdxVyrgR7CwZc/edit?usp=sharing&resourcekey=0-1bNp0ocF4AwGBj6NvRfrEA",type:301},{source:"/go/analyze-flutter-in-runtime",destination:"https://docs.google.com/document/d/1VZOv9NsmNeXaqM9h9EjKTz5cg7lEsA623XBfbojXU5U/edit?usp=sharing",type:301},{source:"/go/android-assets-in-flutter",destination:"https://docs.google.com/document/d/1jymgQYxRTe5rdprt74ERh7Jsa0lfnRuMnkOmJusLWsE/edit",type:301},{source:"/go/android-built-in-kotlin-support",destination:"https://docs.google.com/document/d/1iAMVVvsHqs130hc3-49sstv7n63TgM5aUd-cqAGWHfc/edit",type:301},{source:"/go/android-dependency-versions",destination:"https://docs.google.com/document/d/1qeeM5QG-jiafttSgvc7yvC19IDRggFFZQTktBVxL6sI/edit?usp=sharing&resourcekey=0-HLEAiBOMxAlQxDs-mEeffw",type:301},{source:"/go/android-embedding-dependencies",destination:"https://docs.google.com/document/d/1vITp2mUZRa-cmll0sPH0zjNgPlyvOMx7awxPNRAPyic/edit",type:301},{source:"/go/android-embedding-move",destination:"https://docs.google.com/document/d/1nQujwZfEe3QOHTyZn160eImpoJOYioADP09DtumcLcc/edit?ts=5d8041db#",type:301},{source:"/go/android-java-gradle-error",destination:"/release/breaking-changes/android-java-gradle-migration-guide",type:301},{source:"/go/android-migration-summary",destination:"https://docs.google.com/document/d/1wKspwf6LQu6uo32uQ9NcukfiKhLL4ButV9cwpjeb8QI",type:301},{source:"/go/android-ndk-version",destination:"https://docs.google.com/document/d/1sljfqHpI5m4uxsL7B89yhYluO97Mz1YKyA0VgzzXyZ4/edit?usp=sharing&resourcekey=0-Ts9Rk8jbJor7WBMMiehKWg",type:301},{source:"/go/android-plugin-migration",destination:"/release/breaking-changes/plugin-api-migration",type:301},{source:"/go/android-project-migration",destination:"/platform-integration/android/androidx-migration",type:301},{source:"/go/android-root-predictive-back",destination:"https://docs.google.com/document/d/1BGCWy1_LRrXEB6qeqTAKlk-U2CZlKJ5xI97g45U7azk/edit#",type:301},{source:"/go/android-splash-migration",destination:"/platform-integration/android/splash-screen-migration",type:301},{source:"/go/android-startup-tracing",destination:"https://docs.google.com/document/d/1I7jvRg3UmG7P84hdis-9A00fEr2Ntj-K7f_FbGLubGE/edit?usp=sharing",type:301},{source:"/go/androidx-transition",destination:"https://docs.google.com/document/d/1JnMxQinUeouuV5kcenoq03TsvLyn_xaHXIT_6c5b7nQ",type:301},{source:"/go/animated-widget",destination:"https://docs.google.com/document/d/1St9DhxNTuELg7CNBIL9D_gQfBUByXaoWBwq8_riby7g",type:301},{source:"/go/annotator-tree",destination:"https://docs.google.com/document/d/1YtkdZSx1687Ipbff06qp3XglmJym3Wc9boY4I-bYs4A/edit",type:301},{source:"/go/api-for-transform-performance",destination:"https://docs.google.com/document/d/1Fxdlf7JsA-yAwc_RNuboMG-vhIhchRBZGvDSwg5qR0A/edit?usp=sharing",type:301},{source:"/go/app-extensions",destination:"https://docs.google.com/document/d/1WloBrAYpqNKOhEHytTqJEHshcXxHflLUGKvULKRHbuU/edit?usp=sharing",type:301},{source:"/go/apple-pencil-double-tap-support",destination:"https://docs.google.com/document/d/1r4P5r-jGt2Sjqro3ldCU2axUiHTpu3yhIycnI94OKQw/edit?usp=sharing",type:301},{source:"/go/apple-squircles",destination:"https://docs.google.com/document/d/1CJXULKJGQt22FOFsrlm2TKVjKBtif1yU4U50cMfL6Kc/edit?usp=sharing",type:301},{source:"/go/application-lifecycle-events",destination:"https://docs.google.com/document/d/1FL5Fgk7EzMNOpJL0GZJt-lfWtGt2igHuC2ZznItS2l8/edit?usp=sharing&resourcekey=0-IZNfpSVPkMbigQLLXoJcfw",type:301},{source:"/go/asset-lookup-in-plugin-binding",destination:"https://docs.google.com/document/d/1iwGFWipC0v0FKvAgbjGl0kaV9IGox1YiD8jUP8Vvkjc/edit",type:301},{source:"/go/asset-transformation",destination:"https://docs.google.com/document/d/1i_trjTF-gJ3Xj-GUtVmyLETa5CwStvabEjtD5z8ArC4/edit?usp=sharing",type:301},{source:"/go/autocomplete",destination:"https://docs.google.com/document/d/1fV4FDNdcza1ITU7hlgweCDUZdWyCqd-rjz_J7K2KkfY/edit?usp=sharing",type:301},{source:"/go/automated-revert-workflow",destination:"https://docs.google.com/document/d/1lBkWo9rzHseoYaEaa12HOjVS32uQ5rFdLRUCO_CQoiQ/edit?usp=sharing",type:301},{source:"/go/automatic-android-plugin-registration",destination:"https://docs.google.com/document/d/1xNkBmcdVL1yEXqtZ65KzTwfr5UXDD05VVKYXIXGX7p8/edit",type:301},{source:"/go/automatic-pointerinterceptors",destination:"https://docs.google.com/document/d/10EQC_bDsTnrUpEOSxN6Fnogu3ouZCUlXEZFof-oMKc4/edit?usp=sharing",type:301},{source:"/go/autosubmit",destination:"https://docs.google.com/document/d/14oAi2gHMDnqOVe2rEl0syny7_7xsCHh83HtdomQgouM/edit?usp=sharing",type:301},{source:"/go/baa-registration",destination:"https://flutter.dev/events/building-agentic-apps#registration",type:301},{source:"/go/backdrop-filter-with-overlay-canvas",destination:"https://docs.google.com/document/d/1t_offKOgkuVzvB3fqGTfcltovb-yxqV6tbuP1qIBqVI/edit?usp=sharing",type:301},{source:"/go/backing-stores-for-multi-view-partial-repaint",destination:"https://docs.google.com/document/d/1CPpA86BTF6JTvztmRWCeLGQoPEqX_msYMG6avdqhaFk/edit?usp=sharing",type:301},{source:"/go/base-annotations-local-position-on-region",destination:"https://docs.google.com/document/d/1r7FQTOw2vZJZ5c0VoNqi9CWmZY3MvUfz0spdf0-nK6k/edit",type:301},{source:"/go/basic-color-set",destination:"https://docs.google.com/document/d/1y38TN9AUTyd0eTbu4kx4FiNgfsLDPvWvi92Fv5HWFjQ/edit?usp=sharing",type:301},{source:"/go/batch-release-one-pager",destination:"https://docs.google.com/document/d/1jUoFaawutbYsCI5oY3pDP_l-xpv6FhDKlcI1-EoT02s/edit?usp=sharing",type:301},{source:"/go/blankcanvas",destination:"https://docs.google.com/document/d/1rS_RO2DQ_d4_roc3taAB6vXFjv7-9hJP7pyZ9NhPOdA/edit?resourcekey=0-VBzTPoqLwsruo0j9dokuOg",type:301},{source:"/go/bottom-navigation-bar-title-deprecation",destination:"https://docs.google.com/document/d/1L-2nPf5hbLGNoRvOSUmnxgUHahBVzW1ybhTXGY3ObDw/edit?usp=sharing",type:301},{source:"/go/buffer-queue",destination:"https://docs.google.com/document/d/1rXl9G-VmISVlVkKVgrnQKeX7Mexyez0x9HZ5F5yKxrQ/edit?usp=sharing",type:301},{source:"/go/build-aar",destination:"/add-to-app/android/project-setup#option-a---depend-on-the-android-archive-aar",type:301},{source:"/go/build-dashboard-v2",destination:"https://docs.google.com/document/d/1kwh48xYuoVtadYFb2I2t6BJMGEW07K7T5WYcieAZZiY",type:301},{source:"/go/build-flows",destination:"https://docs.google.com/document/d/1imsVxbeAsttTi90EFpbnbVzov9z0xXd7tLCAr_QAJ38",type:301},{source:"/go/buildtextspan-buildcontext",destination:"https://docs.google.com/document/d/1nr-g45gXcWTYoW9UmChZV7Ije3lKP4pEvDQCdz6NFdI/edit?usp=sharing",type:301},{source:"/go/cacheless-shared-preferences",destination:"https://docs.google.com/document/d/1DNhUYIJaDA10g2cOqipKyPuPkgL_FYPfgkF9Coqcc6k/edit?usp=sharing",type:301},{source:"/go/calculating-flutter-frame-rate",destination:"https://docs.google.com/document/d/1YGLELXWdC6YIN03QzEzcIRJc56gCnabPBW8BHCAFR58/edit",type:301},{source:"/go/camera-privacy",destination:"https://docs.google.com/document/d/1t_5FYzOTlBWC6arHc4_8VuG0BUOtIyP9xWvbDER5Y9I/edit",type:301},{source:"/go/camera-custom-codecs",destination:"https://docs.google.com/document/d/1izEaCsNQGO25xKSSQ90t_OLX65qfhEXuEYhD0smpZ_4/edit?usp=sharing",type:301},{source:"/go/can-i-use-impeller",destination:"https://docs.google.com/spreadsheets/d/1AebMvprRkxP-D6ndx920lbvDBbhg-sNNRJ64XY2P2t0/edit?gid=0#gid=0",type:301},{source:"/go/cascading-menus",destination:"https://docs.google.com/document/d/17XOSGzLzqbpNcCUwakM_WQ2ZOMcUOXcPC__7nPORwms/edit?usp=sharing&resourcekey=0-hg74S2vAAqwJFN984ZXQHg",type:301},{source:"/go/center-floating-label-inputdecoration",destination:"https://docs.google.com/document/d/1sxP91vZiY7McmSMmzrboklIJWQ_6pSS9MBSCrQq016M/edit#",type:301},{source:"/go/change-default-textselectionhandlecolor-to-accentcolor",destination:"https://docs.google.com/document/d/1RJQd5ABWJ_7DZN19aTZBCE7xHzlC4MYBP1bWE2FWcvc/edit",type:301},{source:"/go/chip-usedeletebuttontooltip-deprecation",destination:"https://docs.google.com/document/d/1wc9ot7T2E7hJubYxEWMX230a79wYSiFey4BHxnEzHtw/edit?usp=sharing&resourcekey=0-Bo7KPqEtkWgZcSuRCqwQ5w",type:301},{source:"/go/ci-post-test-analysis",destination:"https://docs.google.com/document/d/1V0W6q7gkk2hHFLYb3t7JFr84Km5uhKl9T3Ksb1IpkLQ/edit?usp=sharing",type:301},{source:"/go/clean-up-not-disposed-disposables-in-ff",destination:"https://docs.google.com/document/d/1bXannXQ8rEtfwxEVd7LDo7xiVu5-QxRoall28MIIFss",type:301},{source:"/go/clip-behavior",destination:"https://docs.google.com/document/d/1gC5Di4ykTCqupD77PWpy9D8xXo0Ide5CnrH0zzVIhKo/edit",type:301},{source:"/go/codeshare-avatar",destination:"https://docs.google.com/document/d/1tFLsdeahcHvjS9ERo9926duK7AshZiHEiCd3yZ9ZgI0/edit?usp=sharing",type:301},{source:"/go/codeshare-expansion-tile",destination:"https://docs.google.com/document/d/1GTyEZjjTpx6fcrzOX-6kQ3phwu5UhUGLOWXJoy0yto0/edit?usp=sharing",type:301},{source:"/go/codeshare-tooltip",destination:"https://docs.google.com/document/d/1K3msJRq_Rru5hMhUYl34U0CTjM889J_xekRSGj1gSJo/edit?usp=sharing",type:301},{source:"/go/colorscheme-enhancements",destination:"https://docs.google.com/document/d/1cIBW0jMRrtWVA5E0TB0qmwqSgLoVDIVPOysKYJOvH7U/edit?usp=sharing",type:301},{source:"/go/colorscheme-generation",destination:"https://docs.google.com/document/d/1P7f-DGPWz6HCbwLoAruRuWtakPx4VY-e8nT_yuQ71sc/edit?usp=sharing&resourcekey=0-qxeub7yCKa_No0HlrzEk-g",type:301},{source:"/go/colorscheme-m3",destination:"https://docs.google.com/document/d/1mY1ahBQEMAfsawGJMX5S34pXb7c8dHGatyotClReeas/edit#heading=h.cnnhzna3pz6d",type:301},{source:"/go/compass-25",destination:"https://github.com/flutter/demos/tree/main/compass_25",type:301},{source:"/go/configurable-autosubmit",destination:"https://docs.google.com/document/d/14pf4jfBy1-PHYmJLVbeqrh1swTF01SZ2YD3DR_Qv3kM/edit?usp=sharing&resourcekey=0-AW7-kNNGmmpSUqyOvBdwRg",type:301},{source:"/go/contextual-menus",destination:"https://docs.google.com/document/d/1F1itGgbSS3Cbq70hScSCNriDoux1sMGF9LHZsMdvU74/edit?resourcekey=0-RkHGwhe-tcoTGlaQyclPtQ",type:301},{source:"/go/cross_file-content-uri-implementation",destination:"https://docs.google.com/document/d/1-d7uWlB9ERPIOFRQ1nJGGiPDb9ALh7QxincEPOmGc3c",type:301},{source:"/go/cupertino-bottom-sheet-routes",destination:"https://docs.google.com/document/d/16eMliX4HsDjRmEob2lksM6JBq2_LPVM26uYGyTid1ec/edit#",type:301},{source:"/go/cupertino-context-menu-action",destination:"https://docs.google.com/document/d/1lCuPyAbIzAr0c2KIEZhREC_EnkTKBxNiqP6lGLT-KpU/edit",type:301},{source:"/go/cupertino-datepicker-redesign",destination:"https://docs.google.com/document/d/1Ib5ztLzc19e1Uggz16BFlrJMg1TOdYLyP-WqtTpDltM/edit?usp=sharing&resourcekey=0-11oVmOsTHLD5fqxdAHZqNg",type:301},{source:"/go/cupertino-expansion-tile",destination:"https://docs.google.com/document/d/13ivkzGpYDn7yJYFCwLmQhnk3W_jCaTaWMzjzK0LzsGU/edit?usp=sharing",type:301},{source:"/go/cupertino-increase-contrast",destination:"https://docs.google.com/document/d/1kePVlqWvJu5Ph0RL6wgg67F3SATmsJ8QY5N0S1MvaGg/edit#",type:301},{source:"/go/cupertino-switch-onoff-labels",destination:"https://docs.google.com/document/d/1DD5gx8x0ej5AJzGxzpr4hpgpqsvcDu-ozKliGnhHm7c/edit#",type:301},{source:"/go/custom-colors-m3",destination:"https://docs.google.com/document/d/1LbD4JqBgAfHex02oR3r2jyu9lTBBNBmyec2ovT59Kr8/edit?usp=sharing",type:301},{source:"/go/custom-tabs-support",destination:"https://docs.google.com/document/d/1GvsmPQz6aKixNUphL10XmSOL7M6nOH7W1jYwNp0LwnA",type:301},{source:"/go/dart-flutterbuffers",destination:"https://docs.google.com/document/d/1rqKq6DwqaeBfTLTixxurrdT9HwZ02DyRjFigO9SiB1Q/edit#",type:301},{source:"/go/dart-io-as-package",destination:"https://docs.google.com/document/d/1XIDcawCBVqpsunm1MdeBYggNJ8qnFqqB9WEi7lgnthc",type:301},{source:"/go/dart-oriented-flutter-plugin",destination:"https://docs.google.com/document/d/1oT86S2SZClfJQ5GDQ9I8ZI_VzvKnquSbABuoNdPbQW8/edit?usp=sharing",type:301},{source:"/go/dart-patterns",destination:"https://docs.google.com/document/d/1p6JV-pvr8_45qI5fumv6Ir60wEeagKCceTngYOXt_U4/edit?usp=sharing&resourcekey=0-jGJyRsTPSIpGPN0xgvzSwg",type:301},{source:"/go/dart-static-analysis-ir",destination:"https://docs.google.com/document/d/1xJYGBSoXL7h1z43NnjFsXxauQGXvUnacef4XR1zmeGA/edit#",type:301},{source:"/go/dart-tooling-daemon",destination:"https://docs.google.com/document/d/1Qldlyi2TmzTsDN1AS5AfjE93-A2nR296Np5bZW2aBwU/edit?usp=sharing&resourcekey=0-ckijCX_-ZSy-J_KBI-FQ1Q",type:301},{source:"/go/dart-workspace-support",destination:"https://docs.google.com/document/d/1_SfTg0W8PASZ2neTkNhYjcVDdFvomeoAnZ_XqflIx88/edit?usp=sharing&resourcekey=0-dcmTZFHicV9ZZL863zC5-w",type:301},{source:"/go/dartle",destination:"https://docs.google.com/document/d/1Ei0ZIqdqNjxTHoGB3Ay6SWQg3DMSsKKWl70XoBUCFTA",type:301},{source:"/go/dash-tooling-plugin-strategy",destination:"https://docs.google.com/document/d/1Zc0AE8JTKfOSA-IFpEYcPFJ2eALbXE3AG4ZucWXeMig/",type:301},{source:"/go/data-sync",destination:"https://docs.google.com/document/d/1yH96-p-SkMmt6hL5xHHDtMvCKRz2XGrMuw9ZY_nE954",type:301},{source:"/go/decouple-design",destination:"https://docs.google.com/document/d/189AbzVGpxhQczTcdfJd13o_EL36t-M5jOEt1hgBIh7w/edit?usp=sharing",type:301},{source:"/go/decouple-menu-state",destination:"https://docs.google.com/document/d/1enHNxOzwI1WDC4ZOqQXKAGbBX07nD1yLcgSO8t7lyg8",type:301},{source:"/go/decouple-page-transition-builders",destination:"https://docs.google.com/document/d/1iIoJH_TkeCWl14h_jnVqW5EG-y2y7YKWbnkPYMZUZUo/edit?usp=sharing",type:301},{source:"/go/decoupling-design-from-text",destination:"https://docs.google.com/document/d/1oFezK5leJzTWA5lsw3BQGx7gLbhpSL8dMleU3HD7bNY/edit?usp=sharing",type:301},{source:"/go/dds-daemon",destination:"https://docs.google.com/document/d/18IgFakijiv9CLFGT5BckbwZuf2pqhOUeN27mB9XqvpQ/edit?usp=sharing&resourcekey=0-rBHvH9gLXLjGPWt5WE-XFg",type:301},{source:"/go/decoupling-framework-tests",destination:"https://docs.google.com/document/d/1UHxALQqCbmgjnM1RNV9xE2pK3IGyx-UktGX1D7hYCjs/edit?pli=1&tab=t.0",type:301},{source:"/go/deep-link-flag-migration",destination:"https://docs.google.com/document/d/1TUhaEhNdi2BUgKWQFEbOzJgmUAlLJwIAhnFfZraKgQs/edit?usp=sharing",type:301},{source:"/go/default-animation-style",destination:"https://docs.google.com/document/d/18c28hbe1mRBZLcnaip5LM9zlshIOEpuvBLWKZiXGe9g/",type:301},{source:"/go/default-scroll-action",destination:"https://docs.google.com/document/d/1SJvom6k4YW4EtFIY4VpAhAOH-jWhRkHVfpVsOBB56KM/edit?usp=sharing",type:301},{source:"/go/deferred-image-decoding",destination:"https://docs.google.com/document/d/1f-NCEF0lrHGd3DsieS1tZ_NWbYTjA4GTqESMbGFsU2U/edit?ts=5e17a77d&pli=1#",type:301},{source:"/go/delegate-route-transitions",destination:"https://docs.google.com/document/d/10C5VbqhU7FkkDSVlcVZmrl8UyL7nw4CeL4QdPKMjsEk/edit?usp=sharing",type:301},{source:"/go/deprecate-html-renderer",destination:"https://docs.google.com/document/d/1DGamHsa2lz_Qtgfrfa3j3fRaEopJXc7tCFVM1TQlck8/edit?usp=sharing&resourcekey=0-IjkqrCoo_EcRRS2bPYKI8w",type:301},{source:"/go/deprecation-lifetime",destination:"https://docs.google.com/document/d/1Gc3ecrMghzc7WU4pgzKB8uBaTPpRdWfozn0otBbxR7s/edit?usp=sharing",type:301},{source:"/go/deprecation-statustransitionwidget",destination:"https://docs.google.com/document/d/1NdxSKSEKa-E9YDUAyONQVad1bAZdc8bqT4zGVjSBQPo/edit?usp=sharing&resourcekey=0-CkJogS7MIhfZeabrIAUPhQ",type:301},{source:"/go/deprecations-removed-after-1-22",destination:"https://docs.google.com/spreadsheets/d/1kZOej-h4AiRW2Td3NUnVMSb8PYLB63mpj-oFYqb_4tc/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-2-10",destination:"https://docs.google.com/spreadsheets/d/12krawYCu6X_g_5wLGpmiAIi-VcTRV6xG7RGbRovuatQ/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-2-2",destination:"https://docs.google.com/spreadsheets/d/18VuxojMGFKrFJCeilg3tErAtp23-_tp43XUioC_34To/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-2-5",destination:"https://docs.google.com/spreadsheets/d/191-PZEOmlT7Xw6MDFFyf5HyneTaiCqI4OITtolbXD6c/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-3-10",destination:"https://docs.google.com/spreadsheets/d/1gs2tvYBuwycP1XAZsDbMuqP5jUa6gWH1a0ZQGrzjXvw/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-3-13",destination:"https://docs.google.com/spreadsheets/d/1zzyBRdIkqiEcpv_njEQA7pyG7X8PcNhvXFYrEAB8P78/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-3-16",destination:"https://docs.google.com/spreadsheets/d/1ei3UmfvhmGGuwAGgLaQo1k_pgdu9Mu06tHPuSaS4TI4/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-3-19",destination:"https://docs.google.com/spreadsheets/d/1x_UJ7GiB61ByBo6cPLm_JfLrgFqAfkQo7pPK_lHvsUo/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-3-3",destination:"https://docs.google.com/spreadsheets/d/13cZzXz3_yMhnMH3Fyv2TKR_3974el103xlZuNWdevZM/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-3-7",destination:"https://docs.google.com/spreadsheets/d/1WCQmKobsgslfhqf6uL7I2BKk5KKhGX-n_xfk9g3CTEE/edit?usp=sharing",type:301},{source:"/go/desktop-multi-view-runner-apis",destination:"https://docs.google.com/document/d/1WkJuzifgJXyceaSoCCu8qTETYmYBOYKoz7Qaxtsore4/edit?usp=sharing",type:301},{source:"/go/desktop-multi-window-support",destination:"https://docs.google.com/document/d/11_4wntz_9IJTQOo_Qhp7QF4RfpIMTfVygtOTxQ4OGHY/edit",type:301},{source:"/go/desktop-release-conductor",destination:"https://docs.google.com/document/d/15AwPXNd5FvItAqM0wa2VK0tRrqtRTgM8vR5LQeT2Mag/edit?usp=sharing&resourcekey=0-yZ2FAN-wEKwKT-ymdisetA",type:301},{source:"/go/desktop-resize",destination:"https://docs.google.com/document/d/1OTy-qCGdP7tYfrEKCNX9A24sgnx5vshfK6FupfniyxA",type:301},{source:"/go/desktop-resize-macos",destination:"https://docs.google.com/document/d/1slGllp1Jhde7wkF6snqGhdrZwHV1VVmXeIF3f0t24JU/edit?usp=sharing",type:301},{source:"/go/detect-memory-leaks",destination:"https://docs.google.com/document/d/1hvRVpULPnwGjBc5nw52iSaDfB8hjIzbaQuECHmKvDrY/edit",type:301},{source:"/go/developing-plugins",destination:"/packages-and-plugins/developing-packages#plugin",type:301},{source:"/go/devintel-q1-2024",destination:"https://docs.google.com/document/d/15W9wsqzFcidXR12DiPH5r5ZDcZw_wDa7Zi9CAAe34Y4/edit?usp=sharing&resourcekey=0-XH0RYaDhNkqa_WCjbH0otA",type:301},{source:"/go/devintel-q2-2024",destination:"https://docs.google.com/document/d/17BdqRJLLuFeG-3YEumpOGKUJW-kVDoQFLuchCZgyM7c/edit?usp=sharing",type:301},{source:"/go/devintel-q3-2024",destination:"https://docs.google.com/document/d/1Gpb9Nuu79s8EZL40N6JXZGIu12TiP4570RBZT1O4zLg/edit?usp=sharing",type:301},{source:"/go/devintel-q3-2023",destination:"https://docs.google.com/document/d/1VGux5IxePO8lN_7kUuzYJtcJ76fkldr_TJv4R0tciYk",type:301},{source:"/go/devtools-discoverability-in-vs-code",destination:"https://docs.google.com/document/d/1iRx1_QpBOS88rS5shylzv_i5BisFDskavBuAeYGOUOs/edit?usp=sharing",type:301},{source:"/go/dirty-region-management",destination:"https://docs.google.com/document/d/19WDvGJql1bmnECTdEzJFeH9Ixw4AP2R7JlgujBSbDbk/edit?usp=sharing",type:301},{source:"/go/disable-dropdownmenuitem",destination:"https://docs.google.com/document/d/13W6PupVZUt6TenoE3NaTP9OCYsKBIYg9YgdurKe1XKs/edit?usp=sharing&resourcekey=0-6n8D5zSLjWs2ZncIyG6HUw",type:301},{source:"/go/docs-nnbd-migration-guide",destination:"https://docs.google.com/document/d/1U8blxmkArsd09C-IGe3cQbJ5SvDLhwn0rWWsY2SthZ4/edit?usp=sharing&resourcekey=0-0CviWT1D47VGxK-Li4_NIw",type:301},{source:"/go/double-buffered-window-resize",destination:"https://docs.google.com/document/d/1allwMZXgX9gGVPguFy3-XydjXEIJgYR1Uhz8Vhm9Rrs/edit?usp=sharing",type:301},{source:"/go/downward-memory-pressure",destination:"https://docs.google.com/document/d/15zslrHsWigh9e8LeQxfieWwnXDBx5jicFPXD6l_SsH4/edit?usp=sharing",type:301},{source:"/go/drm-embedder",destination:"https://docs.google.com/document/d/1XbzbpbVBFC4H-iJfibdKEFOWn8PUCd3PQQDAOaj--wQ/edit?usp=sharing",type:301},{source:"/go/drm-embedder-api",destination:"https://docs.google.com/document/d/13Y0npyYM8iIXDqfvvHNYWFj3aO1xGT20rFbwV4-gRq8/edit?usp=sharing",type:301},{source:"/go/drm-embedder-metal",destination:"https://docs.google.com/document/d/1ed0hv_0UWUyRCpRWRbv-Ff7sxMimIXwCk5kepWbNA5k/edit?usp=sharing&resourcekey=0-sCLVUBH5gQh-CvdULgkOhw",type:301},{source:"/go/drm-embedder-vulkan",destination:"https://docs.google.com/document/d/1MC-2vM1eqlpnm1QFvijCzTDL8pvHpaxqNxaKnA7Soec/edit?usp=sharing",type:301},{source:"/go/dynamic-plugins",destination:"https://docs.google.com/document/d/18AQCXxFrCu8UahRVy__VAQTWUnaonKtl24TUr86KkXs",type:301},{source:"/go/education",destination:"https://docs.google.com/document/d/1PG2aPAkWkJ4q6k0wKlVwo86QZ9yLlZOeMVHStzDhwp4/edit?resourcekey=0-rzmUbzd7yaIHRbgh0kqqMg",type:301},{source:"/go/eliminating-nullok-parameters",destination:"https://docs.google.com/document/d/1LKBL0S1uyhACDiUXILhLKFZH8Cpl_w3mXjHgaE8_--U/edit?usp=sharing",type:301},{source:"/go/embedder-vulkan-support",destination:"https://docs.google.com/document/d/1vaUkfDett2mzKIUmq6uC-7Se2NEAf4XkwKU7ISTJpQE/edit",type:301},{source:"/go/encoded-image-dimensions",destination:"https://docs.google.com/document/d/18KL4CILgjwjeb6vXDsIn5U7vHGSonpgR05FqaSsvoVc/edit",type:301},{source:"/go/engine-build-definition-language",destination:"https://docs.google.com/document/d/1R2X4-YztJMyt82nPLXbQhDA50PcMDgavXN4JUu39hKI",type:301},{source:"/go/engine-cpu-profiling",destination:"https://docs.google.com/document/d/1z_V69XzRct3vR7mBZ9tuuS1pZ_e7FQkuzbVJjXxMeaI/edit",type:301},{source:"/go/engine-rtree",destination:"https://docs.google.com/document/d/1UGV0qerZ8o3eGrjm1axp0NoLWrT0KmTonMamb-xifEM/edit?usp=sharing&resourcekey=0-wh0paKk1H1vZbzxKxIj2jA",type:301},{source:"/go/engine-v2-recipes",destination:"https://docs.google.com/document/d/1vP26tMAJqqHlIF2QZUfcirFe5zmei7gZ1zQ6IVGQPU4",type:301},{source:"/go/error-handling",destination:"https://docs.google.com/document/d/1HdGLKoVw_KWLrVzDNZ8Lk5nN-biHQzi_CS5mCkpiDwA/edit",type:301},{source:"/go/everything-builds-from-a-module",destination:"https://docs.google.com/document/d/1fkUpos4hbJF0NYSwjNLWct2UGDg-AfhxzlR6p2g0w9M",type:301},{source:"/go/expansible-state-mixin",destination:"/go/codeshare-expansion-tile",type:301},{source:"/go/exposing-scroll-behaviors",destination:"https://docs.google.com/document/d/1W5PSIO1cVj7v6_xayydyFN3abWFOJTmFHKGBA9VKbbg/edit?usp=sharing&resourcekey=0-AHb9dJP8Knv3GWwZLnzZWQ",type:301},{source:"/go/external-drag-and-drop",destination:"https://docs.google.com/document/d/1toFc3Fjafv8jDToQ85S5AquC7NOoJ2ZO_Or484nsEuo/edit?usp=sharing",type:301},{source:"/go/fallback-image-decoding",destination:"https://docs.google.com/document/d/1G-5s6uoP1H_7f_ByLrvCVcoFXYZ80CixkMbbHMsMCag/edit?usp=sharing",type:301},{source:"/go/faster-cocoon",destination:"https://docs.google.com/document/d/1NXP0_9TJ1qz674iYyOGVLEHWVpmbXr5yjhBrdoU_x5g/edit",type:301},{source:"/go/federated-platforms",destination:"https://docs.google.com/document/d/1z_4Z5JMTbk5c4FpayVAb-PTz2wLP-aSCirbieavT3Ws/edit?usp=sharing",type:301},{source:"/go/federated-plugins",destination:"https://docs.google.com/document/d/1LD7QjmzJZLCopUrFAAE98wOUQpjmguyGTN2wd_89Srs/edit",type:301},{source:"/go/ffi-in-embedders",destination:"https://docs.google.com/document/d/11siUQs1Fn7G1Baue6YYrJHT0ieNiC-956yVv4gqAhr0/edit?tab=t.0",type:301},{source:"/go/ffi-plugins",destination:"https://docs.google.com/document/d/1vMw-W6L-r-uL1SUgzDh6J5rmtqum7SZdO9khWACrZJI/edit?resourcekey=0-vvjEK88N-pApyKTPWJ2IZQ",type:301},{source:"/go/file-system-access-from-devtools",destination:"https://docs.google.com/document/d/1BNgZka2N9HYL11A4IdR8FqsSW1VMr9Vo7CSrjY9rcic/edit?usp=sharing&resourcekey=0-H1f6lS5KjytrUCWc1vcS_w",type:301},{source:"/go/flame-dartpad",destination:"https://dartpad.cn/?id=3e52ca7b51ba15f989ad880b8b3314a2",type:301},{source:"/go/flavor-specific-assets",destination:"https://docs.google.com/document/d/1_3GwdRZ1WPBqR9koNxESfAXHqynv36__ctMqN-NRG0k/edit?usp=sharing",type:301},{source:"/go/floating-snackbar-offset",destination:"https://docs.google.com/document/d/1elP-y83PtvfAZHNcpHCtnOFhZO9VnnlobwfQ33QO4hg/edit",type:301},{source:"/go/floating-widgetspans",destination:"https://docs.google.com/document/d/1I-VqCxvszXGAas_6EE9b6ZIzyMY3HjxDxGW9_DWWd7M/edit",type:301},{source:"/go/flutter-android-emulator-testing",destination:"https://docs.google.com/document/d/10wYUcLcSTF4Epg2EUGoBqOkkOe4zxKHvYKjXFZAOgGs/edit?usp=sharing&resourcekey=0-pltjPvEtVezXDADMbUwFHQ",type:301},{source:"/go/flutter-dependency-hosting",destination:"https://docs.google.com/document/d/1EKb1VypI0ArXqwBWJKGTsiQ2WU0ruYb55JpIeKxWaDs/edit",type:301},{source:"/go/flutter-developer-tooling-plugins",destination:"https://docs.google.com/document/d/189A-T-pcHPuds8pOtbzLS8Wl6Hr0AIAIl0aRTPvLKec/",type:301},{source:"/go/flutter-devtools-extensions",destination:"https://docs.google.com/document/d/189A-T-pcHPuds8pOtbzLS8Wl6Hr0AIAIl0aRTPvLKec/",type:301},{source:"/go/flutter-devtools-static-extensions",destination:"https://docs.google.com/document/d/11J4h1oEfB9wBoRYUy4KzclnKITBY-234jKpU3kq4V4w/edit?resourcekey=0-pPo85Svkb9lKdtlrhMCTbw",type:301},{source:"/go/flutter-doctor-app-folder",destination:"https://docs.google.com/document/d/1_N70oh5rl0pMlz-epE_3fIr7gqE94dgoV-DHq5OlF2I/edit",type:301},{source:"/go/flutter-drop-android-jellybean-2023",destination:"https://docs.google.com/document/d/1wWNly2SZRDqupSsHkBWDI_lS2MohBGEwPSXF6W05NOc/edit?usp=sharing",type:301},{source:"/go/flutter-drop-macOS-10.13-2022-q4",destination:"https://docs.google.com/document/d/1wHqr2cob78VfUKhOFEKjaUM_mnV4gL-mg3gSQCFhF7Y/edit",type:301},{source:"/go/flutter-drop-win7-2024",destination:"https://docs.google.com/document/d/18gfRT8klo0zEvn6fIpders7ghoWIBKO22cNYS22WLhc/edit?resourcekey=0-SFkxdqfyM6KNNkG4zS6aaA",type:301},{source:"/go/flutter-engine-clocks",destination:"https://docs.google.com/document/d/1Sx8QA1qXgJGw5r4ESviDnU2LSShNHiq_LjbRWPgSvXQ/edit?usp=sharing&resourcekey=0-BoBvLxgqf_nc_rwLc0zmTw",type:301},{source:"/go/flutter-engine-extensions",destination:"https://docs.google.com/document/d/1xG7jR4FserdW7TdwnklF3_lXUGmt4myPQjDGF3LFtCQ/edit?resourcekey=0-Iug4D2mWuyQI6suvC_2itw#",type:301},{source:"/go/flutter-file-system",destination:"https://docs.google.com/document/d/150KFR6WRSqpxbUcvQriBgrv6P5DMcq6dORikf_cOgZo/edit?usp=sharing",type:301},{source:"/go/flutter-for-embedded-linux",destination:"https://docs.google.com/document/d/1n4NXCk0QlGz16gUCtywR79H0Z1fzPqB2iNL8oxuexuk/edit?usp=sharing",type:301},{source:"/go/flutter-gradle-plugin-apply",destination:"/release/breaking-changes/flutter-gradle-plugin-apply",type:301},{source:"/go/flutter-iap-migrate-pblv2",destination:"https://docs.google.com/document/d/1XM16UsLE_aPWoZnheE9waO06mhxLkkWjpPf9jtI1AdY/edit",type:301},{source:"/go/flutter-ios-system-font",destination:"https://docs.google.com/document/d/1FG9ONkG-sLuFkb9vUAL2i7oeUtUqm8qiQJe_poK754w/edit",type:301},{source:"/go/flutter-lints",destination:"https://docs.google.com/document/d/1b0X0HOzvFY3WxI363U8BXx6Am13qFm96KlbS72mmFAk/edit",type:301},{source:"/go/flutter-migrate",destination:"https://docs.google.com/document/d/1fPnpUI6gXE9PkNWuFoAW20m_sQ87ZSC1rrn_D7fxBvs",type:301},{source:"/go/flutter-nonhost",destination:"https://docs.google.com/document/d/1rTLxAxsshEir-B2vE6DU_MaqMMusOdCgLGEGpBYG3CM",type:301},{source:"/go/flutter-pigeon-native-wrapper",destination:"https://docs.google.com/document/d/1Sw6F8GbNiO_lvS2fFjXrRYk2Go5RNDHudDT6kIX6Sm0/edit?usp=sharing",type:301},{source:"/go/flutter-platform-idling",destination:"https://docs.google.com/document/d/1RhSluOcHED6wEckY8CGK1mowRcWGAEGWraN6REPaORs/edit",type:301},{source:"/go/flutter-platform-views-windows",destination:"https://docs.google.com/document/d/10nVF2f-QTQ5o2HMEZ1fUlBJzK4dEmhuPHTVFEgW-JRs/edit?usp=sharing&resourcekey=0-J-Lsp7xfA-Nr5EMr1av-Xg",type:301},{source:"/go/flutter-plugin-languages",destination:"https://docs.google.com/document/d/1Ok_mUPgmw8_l-ynLueEKtXm2Fs48lEVB0JqZd7M7uyA/edit",type:301},{source:"/go/flutter-plugins-repo-migration",destination:"https://docs.google.com/document/d/1VihAgx1e-X_H8VRc9WmUv_7qqsi81eeHrrhwhHgwtjQ/edit?usp=sharing",type:301},{source:"/go/flutter-skia-ios-font-problem",destination:"https://docs.google.com/document/d/1UkAhEKUEWNUjfKlqoBjJnx8zXrqErIqidPYjd9FBwsg",type:301},{source:"/go/flutter-style-updates",destination:"https://docs.google.com/document/d/1Ao6RZmI4F8VSCpN-89o0Y6bZXhYb1-qgVGV5tALxm48",type:301},{source:"/go/flutter-support-multi-architecture",destination:"https://docs.google.com/document/d/19tzWySgtgtTA99XQsjx5Pg0SFJeZKXyUlYavR0EXv8c/edit?usp=sharing",type:301},{source:"/go/flutter-test-runner-simplification",destination:"https://docs.google.com/document/d/1BBjSAQRJYC3OxgpPq6MxEiO8Dp5qGYaxYYenF17mS1I/edit?usp=sharing",type:301},{source:"/go/flutter-tool-extension-api",destination:"https://docs.google.com/document/d/12iXm23TP6e6qS1Ntx-i-azcBWByiUl_kWjRxRC2YTz8/edit?usp=sharing&resourcekey=0-pVl2giJzGAHqOYEaZagVow",type:301},{source:"/go/flutter-web-scenelets",destination:"https://docs.google.com/document/d/1GUAx3aqdtEoaBMTNpsS1-i59QZlwTi6vUCASbaanPCo",type:301},{source:"/go/flutter-wrapped-2025",destination:"https://docs.google.com/document/d/1cE-oE1ULMeoguPDBKAqWY5AwQOuyZae-NF9v-2YhD9Y/edit?usp=sharing",type:301},{source:"/go/focus-management",destination:"https://docs.google.com/document/d/1-NS3NJFd2j9kzKj5GOPoWq-G0B6jrpiCL892EX5Nxgk/edit",type:301},{source:"/go/forge2d-workshop",destination:"https://web.archive.org/web/20260108140911/https://codelabs.developers.google.com/codelabs/flutter-flame-forge2d",type:301},{source:"/go/form-field-autovalidation",destination:"https://docs.google.com/document/d/16HAURcOtYAoHntDOEtdGy9KkKSItulG9Ldyjzdaosqo/edit",type:301},{source:"/go/fragment-program-support",destination:"https://docs.google.com/document/d/1R0qx3znTe_wcKZoeWwkMlgxs1MtrdiPJ_1xiuExZuH0/edit",type:301},{source:"/go/framework-devtool-a11y-support",destination:"https://docs.google.com/document/d/1lR0QaojgeprwwAy8Ks57rCPKUQOCCRz7Zh3yybKLOsk/edit?usp=sharing",type:301},{source:"/go/games-revenue",destination:"https://services.google.com/fh/files/blogs/gaming_ux_and_revenue_optimizations.pdf",type:301},{source:"/go/generated-plugin-registration",destination:"https://docs.google.com/document/d/17-GIBYMgaoYS_G34w-fL9oe8W_GX70v6X2bhfKSBrdo/edit",type:301},{source:"/go/generating-flutter-localizations",destination:"https://docs.google.com/document/d/18saQREDwBMPA_svFe9IkU22ljNXsLpYxiy__jzPCzEc/edit",type:301},{source:"/go/genui-codelab",destination:"https://codelabs.developers.google.cn/codelabs/genui-intro",type:301},{source:"/go/global-selection",destination:"https://docs.google.com/document/d/1q_ns8VVTS2vaKqGwr_hheZpsoli52wAM0QWi9_uBdnk",type:301},{source:"/go/global-surface-pool-for-macos",destination:"https://docs.google.com/document/d/1YUDyCQ1ocdFICOdWeZuuoOm_8bmmxWr0CnC-Y-qXuNI/edit?usp=sharing",type:301},{source:"/go/globalkey-duplication-refactoring",destination:"https://docs.google.com/document/d/15U1XDLrP-SXfgeu5DBBsA7MQuFpDUW005Y2ObwmYWIc/",type:301},{source:"/go/glossary-expansion",destination:"https://docs.google.com/document/d/1Tuv1Zx0F4yMVfxyChSAR21R8eXUi121J7piF_wyBDHg",type:301},{source:"/go/gn-ninja-engine-artifacts",destination:"https://docs.google.com/document/d/10C0yexPKlx4CdlF-fO4efGhQXEvDH92-RiAhBTj5EF8/",type:301},{source:"/go/go-router-improvements",destination:"https://docs.google.com/document/d/1_mRXinbL_rb0mUt6DAFZ8kj0kh33ZjEMJuUq4PJgwj8/edit?usp=sharing&resourcekey=0-sYbRzE9opneOFZ5F8J3gGw",type:301},{source:"/go/go-router-redirect",destination:"https://docs.google.com/document/d/1L940WGrM1YJ8BkJEpNd67fUqoqC6OsTfch4eH86E0xU/edit?usp=sharing&resourcekey=0-9oxsWU1tLpAACTUXyNjpkA",type:301},{source:"/go/go-router-support-imperative-routing",destination:"https://docs.google.com/document/d/1HCgLi7ialw2Eqv-f_2z9ogdOfcmepIIqCsRhF-DT9dM/edit?usp=sharing",type:301},{source:"/go/go-router-v10-breaking-changes",destination:"https://docs.google.com/document/d/1vjupshmFJtfGSOppZxp7Tzkq7dotcLxCcpdluuNYe1o/edit?usp=sharing&resourcekey=0-aS66t4OcDTjJW50s-veSzQ",type:301},{source:"/go/go-router-v11-breaking-changes",destination:"https://docs.google.com/document/d/1L2LPM_DBqKQx1pTRRfG7pi33P88iAypBju65rcMW_dU/edit?usp=sharing",type:301},{source:"/go/go-router-v12-breaking-changes",destination:"https://docs.google.com/document/d/1KIf_08oHZ18BU0JpNG9dxWP7g4cH0xmF8m7Wmgq80Zk/edit?usp=sharing&resourcekey=0-twH8Zo2kaaIC-vlvVag4yw",type:301},{source:"/go/go-router-v13-breaking-changes",destination:"https://docs.google.com/document/d/1FRdW_p29zH0I3KEMQKW_QMMN7owiQ5Wx-PUhhZpehSg/edit?usp=sharing",type:301},{source:"/go/go-router-v14-breaking-changes",destination:"https://docs.google.com/document/d/1Z6RYo7rGIdtryvQvAntekF53zoz4iy4XvIamBxRWa4Y/edit?usp=sharing&resourcekey=0-CH_yB7ur4gLvSuqPtB5bZA",type:301},{source:"/go/go-router-v15-breaking-changes",destination:"https://docs.google.com/document/d/1107edi31gPcr4rIbUBvkLqZJiP999ZLI7d85InLbmIw/edit?usp=sharing",type:301},{source:"/go/go-router-v16-breaking-changes",destination:"https://docs.google.com/document/d/1E4B5nMDEvsqQiCo-Ki9LohocLFC88X398-AiLXRQhwU/edit?usp=sharing",type:301},{source:"/go/go-router-v17-breaking-changes",destination:"https://docs.google.com/document/d/1bkTAHsTSWP6y1YkznEG1ATLZxBT8b2uufNNs6vcvge4/edit?usp=sharing",type:301},{source:"/go/go-router-v2-5-breaking-changes",destination:"https://docs.google.com/document/d/1MoEM3C6sDvMUuZYCxlYoMI2QJlkONu8i9G53uy5xk-M/edit",type:301},{source:"/go/go-router-v2-breaking-changes",destination:"https://docs.google.com/document/d/12iXx214phOag-XCetaGbSzziXGaHX82V-wMi_-8W04M/edit",type:301},{source:"/go/go-router-v3-breaking-changes",destination:"https://docs.google.com/document/d/1TZ8G_TZ6Dqcpz64qXxArGhtHKFECDEPZFEuxYwQjJz4/edit#",type:301},{source:"/go/go-router-v4-breaking-changes",destination:"https://docs.google.com/document/d/1T2LmzMj5HpD7hEexXL4Xz6vqoJD81bEGaa9NsV24faw/edit?usp=sharing&resourcekey=0-PuQbtDVl7ZabpJ2B9AHWUg",type:301},{source:"/go/go-router-v5-1-2-breaking-changes",destination:"https://docs.google.com/document/d/1HMUZA-lgeGFZ5JyU4g5jOFhbYAbk9ysfz9Ok1tGvqRw/edit?resourcekey=0-7otvjyBeefkQ9xQP9S2-9w#",type:301},{source:"/go/go-router-v5-breaking-changes",destination:"https://docs.google.com/document/d/10l22o4ml4Ss83UyzqUC8_xYOv_QjZEi80lJDNE4q7wM/edit?pli=1&resourcekey=0-U-BXBQzNfkk4v241Ow-vZg",type:301},{source:"/go/go-router-v6-breaking-changes",destination:"https://docs.google.com/document/d/1CMJwd5Moq_scvHf-trRldy9RW5MU7_Y8IB1aTrny-6s/edit",type:301},{source:"/go/go-router-v7-breaking-changes",destination:"https://docs.google.com/document/d/10Xbpifbs4E-zh6YE5akIO8raJq_m3FIXs6nUGdOspOg/edit?usp=sharing",type:301},{source:"/go/go-router-v8-breaking-changes",destination:"https://docs.google.com/document/d/1VCuB85D5kYxPR3qYOjVmw8boAGKb7k62heFyfFHTOvw/edit?usp=sharing",type:301},{source:"/go/go-router-v9-breaking-changes",destination:"https://docs.google.com/document/d/16plvWc9ablQsUs7w6bWDpTZ7PwMP4YUhV-qMQ3iljE0/edit?usp=sharing",type:301},{source:"/go/go-router-builder-v4-breaking-changes",destination:"https://docs.google.com/document/d/1nfwkcmW06ZJsnHr_CvIX-pZcO_5DRMnUb4R6ZAYP3Mo/edit?usp=sharing",type:301},{source:"/go/golden-workflow",destination:"https://docs.google.com/document/d/1MuIUz9pyE_bBZPbtMCj3pYgkdgG4s4Egh6FMknTngKw",type:301},{source:"/go/google-apis",destination:"/data-and-backend/google-apis?utm_source=go-link&utm_medium=referral&utm_campaign=go-google-apis",type:301},{source:"/go/google-sign-in-authn-authz-updates",destination:"https://docs.google.com/document/d/1m-VWG9L0o5GL2oiKWZf7bjyGbFykVYidd9HuML-IEl4/edit?usp=sharing",type:301},{source:"/go/google-testing-v2",destination:"https://docs.google.com/document/d/1Sg_CsGa3VxMNOXFKvoXEPNneD6OUuXIUsmFEjhluhDw",type:301},{source:"/go/google-testing-queue",destination:"https://docs.google.com/document/d/15gMCfOIUWlsRuLRMhMge-7odVHTzU8zibiVFDLdn3Pk/edit?usp=sharing",type:301},{source:"/go/google-maps-advanced-markers",destination:"https://docs.google.com/document/d/1HRyq_aFcYeSKDDyYetce_1Z9Q-GR9ONX_46JioAScQk/edit?usp=sharing",type:301},{source:"/go/google-maps-spm-versioning",destination:"https://docs.google.com/document/d/1g_GeFy4FnTHgUg-Kdmh5VOU8qOGaxGZ0J7cW75Gy8Uk/edit?usp=sharing",type:301},{source:"/go/gpu-texture-compression",destination:"https://docs.google.com/document/d/1SYVhd5L9Zwi5DpyzWiSkJnqhcw5tJV5qm6CR_xGrs6A/edit?usp=sharing",type:301},{source:"/go/handling-synchronous-keyboard-events",destination:"https://docs.google.com/document/d/1rWXSjkb2ZKv-cpg26lVK0aZi4cVeXJ8j7YmSJdq2TOM/edit",type:301},{source:"/go/headless-flutter-engine-with-dedicated-thread",destination:"https://docs.google.com/document/d/1Q8ItSkmGz9bGFfpBTEUSL4SoeHkL6H0yV7kqHy6uroY/edit",type:301},{source:"/go/hermetic-xcode-installation",destination:"https://docs.google.com/document/d/1EcXm4Woq48GR_ky07mEJka6NfV1vFBN2OHDEeGfPk34/edit?resourcekey=0-0Gjtt1I66mGJ8AwiCTlFNw",type:301},{source:"/go/hero-refactor",destination:"https://docs.google.com/document/d/1JZVqykFjhDXcJyj_Ep5gfTmF-Eu4pQXXNRcLCN04tls/edit?usp=sharing",type:301},{source:"/go/hero-use-cases",destination:"https://docs.google.com/document/d/1xCxKy_KtYK1dsqycsZyV3fOMJCxjZMPx87M-MoK-Tmc/edit?usp=sharing&resourcekey=0-kJYMNVh31SmrjEZ_xuZRPA",type:301},{source:"/go/hot-ui-early-prototype-demos",destination:"https://docs.google.com/document/d/1ZaHqKnON8-WEhke3Y6FpHeuB5BNlxDQj1cCYB1SoI_g",type:301},{source:"/go/i18n-user-guide",destination:"https://docs.google.com/document/d/10e0saTfAv32OZLRmONy866vnaw0I2jwL8zukykpgWBc/edit",type:301},{source:"/go/icu-message-parser",destination:"https://docs.google.com/document/d/1wj5rBbuz1bXM1lvt0s0d35F5JRtIPmYUs1UDk1G3HLc/edit?usp=sharing",type:301},{source:"/go/idle-gc-metrics",destination:"https://docs.google.com/document/d/1QjLTDr2cTsmS3DGIWdw9WSgqBMKJkFXD7Q8acziGIIA/edit?usp=sharing",type:301},{source:"/go/image-decoding-registry",destination:"https://docs.google.com/document/d/167qWrlaSAmJm5muqQ-iiJKZy6Q7ZlugIeXmraXava5Y/edit?resourcekey=0-mVrr_zBiSI2Qmd6vqae7Bw",type:301},{source:"/go/impeller-backend-desktop",destination:"https://docs.google.com/document/d/14ou6WEfFjyFwtYZ81oCfIVdUYeG3vqIjvZ16eD0dNPw",type:301},{source:"/go/impeller-dart",destination:"https://docs.google.com/document/d/1Sh1BAC5c_kkuMVreo7ymBzPoMzb7lamZRPsI7GBXv5M/edit?resourcekey=0-5w8u2V-LS41tCHeoE8bDTQ",type:301},{source:"/go/impeller-geometry",destination:"https://docs.google.com/document/d/1t-dzzi04nCdkIReoJp8ZyGNskqIip1TG3WhGEz7Osd8/edit?usp=sharing",type:301},{source:"/go/implicit-animations",destination:"https://docs.google.com/document/d/1-gUqKiHf6w_eck1rZqYjQk0MMPOIlYjZtYu1zjsDLPA/edit?usp=sharing",type:301},{source:"/go/infinite-scroll",destination:"https://docs.google.com/document/d/1TV2oF2iLIZtGd48336korxMTQrGizDAASAeZAeteMSc/edit?usp=sharing",type:301},{source:"/go/inheritedwidget-subscription",destination:"https://docs.google.com/document/d/14BhIyj52NFYuyrWXe8bHJTZp7I67iKNmtOQXHCNH5GQ/edit?usp=sharing",type:301},{source:"/go/inheritedwidget-workshop",destination:"https://dartpad.cn/workshops.html?webserver=https://dartpad-workshops-io2021.web.app/inherited_widget",type:301},{source:"/go/input-field-autofill",destination:"https://docs.google.com/document/d/1wYLsoc7NiHl2jFueB4Ros09E3nDCotdWVovDCFSMcAk/edit",type:301},{source:"/go/intrinsic-box",destination:"https://docs.google.com/document/d/1fTTEDEdH4i9mPXh7IiQ2w8TOwHYpGu7dSk1vFH2Hgow/edit",type:301},{source:"/go/introduce-disposable",destination:"https://docs.google.com/document/d/1cjylBOczGk70x-sn1iZYVNAfpPZdtGWsm_KzoNQX0jc/edit",type:301},{source:"/go/io22concurrency",destination:"https://github.com/goderbauer/io22concurrency",type:301},{source:"/go/ios-17-text-input",destination:"https://docs.google.com/document/d/1sM3HMv-SQin39yX1aPUU7vtGv7Hcef1Quc3QhRXBl6A/edit?resourcekey=0-SFYD8vmOIkXiXCZvB1Wlcw",type:301},{source:"/go/ios-autocorrection-highlight-support",destination:"https://docs.google.com/document/d/18ZO7ThKu2wwCofGOKZSInPsq93IzkQTRn9eiyskeh7I/edit",type:301},{source:"/go/ios-camera-plugin-thread-model",destination:"https://docs.google.com/document/d/1Znjp-BduXIb1Ix3JOE1YKyJi1Z0d6rB-2q6Lt7j8xSo/edit",type:301},{source:"/go/ios-keyboard-calculating-inset",destination:"https://docs.google.com/document/d/1pb1oqTanWSxwM8nAdm_-_ero3P6MM05vR1JjcdeFkiM/edit?usp=sharing&resourcekey=0-syHrzFB8A4zywVaHBicZNg",type:301},{source:"/go/ios-platform-view-engine-overview",destination:"https://docs.google.com/document/d/1G6RNt_5y20g2SfI_V25c02PAXHGH9PgfGnk5dOmBdVI/",type:301},{source:"/go/ios-platform-view-focus",destination:"https://docs.google.com/document/d/1GG8VfYeuVtTQHiMWQXbrSG5HEUorzqU8IGbNySVJ-bY",type:301},{source:"/go/ios-platform-view-hittest-blocking",destination:"https://docs.google.com/document/d/1jVBK6fqLdN7qA8jGM8PryQeUYMYBNvP-808w4K6KBGw/edit?usp=sharing&resourcekey=0-D8jiTjjIZjFSiA20osvrHw",type:301},{source:"/go/ios-platform-view-mask-hardware-rendering",destination:"https://docs.google.com/document/d/1TqG_N4GK_qctuk73Gk3zOdAiILUrwMqxoCMgroK_AeA/edit?resourcekey=0-jUiidfzIS642ngG2w9vSUA&tab=t.0",type:301},{source:"/go/ios-platform-view-touch-gesture-blocking",destination:"https://docs.google.com/document/d/1ag4drAdJsR7y-rQZkqJWc6tOQ4qCbflQSGyoxsSC6MM/edit?tab=t.0",type:301},{source:"/go/ios-platformview-backdrop-filter-blur",destination:"https://docs.google.com/document/d/1V7Jc_RGaknrBBPPBBKB8lT7f3PKhYr8sin35MSMFAf4/edit?usp=sharing",type:301},{source:"/go/ios-plugins-swift-migration",destination:"https://docs.google.com/document/d/1XsaulkJA6_ZSpM7chkQLhQY25sQqhEMiqHMYzw8H85o/edit?resourcekey=0-_cUjF1c0iBvRLKfV-3gK5A",type:301},{source:"/go/ios-pull-to-refresh",destination:"https://docs.google.com/document/d/1oUgNd3fsJ1QVuEmA6ENBT8vq3o6QKCRUPGCB6q91VgI/edit",type:301},{source:"/go/ios-scribble",destination:"https://docs.google.com/document/d/1mjQbsSRQnHuAgMNdouaSgTS-Xv-w57fdKfOUUafWpRo",type:301},{source:"/go/ios-secure-paste",destination:"https://docs.google.com/document/d/16-8kn58h_oD902e7vPSh6W20aHRBJKyNOdSe5rbAe_g/edit?resourcekey=0-gVdJ3fbOybV70ZKeHU7fkQ",type:301},{source:"/go/ios-spell-check",destination:"https://docs.google.com/document/d/10Lvkz802QpzAGFi3Q9WVTMVUV-SPJyG3_xs8XfxG59Q/edit?usp=sharing",type:301},{source:"/go/ios-storekit2",destination:"https://docs.google.com/document/d/1YBlb6J6rjgdtfnHYrQLJ4i_FLpboh41UnFoEF8TfyE0/edit?usp=sharing&resourcekey=0-3-p9q6ludxmTw6u3uMehgA",type:301},{source:"/go/ios-style-blur-support",destination:"https://docs.google.com/document/d/1ygKfRH-hjKwcX4DbXaIa4Ra4q0NpQtrSZdH4jA7vg5g/edit?usp=sharing",type:301},{source:"/go/ios-switch-controll-scrolling",destination:"https://docs.google.com/document/d/1CZ2CRXihPQ1hBUXWODpyPVJ_2Yc0es6tkXrJSnpDajA",type:301},{source:"/go/ios-ui-scene-lifecycle-migration",destination:"https://docs.google.com/document/d/15_m14WgmxVsDqC10icsP8-GoiPAzfJPfsBGLpgFl2DQ/edit?usp=sharing",type:301},{source:"/go/ios-wireless-device-discovery",destination:"https://docs.google.com/document/d/1AY4zhW9C3Q9Ml_YfjM00um1mwQxXblLU6lHrteBdiF4/edit?usp=sharing&resourcekey=0-LOZQ6YinTH1xuDd19vcpOw",type:301},{source:"/go/ios16-video-player-blank-screen",destination:"https://docs.google.com/document/d/1zelzxGf6kUEvtF6hbFRExs5UOz8ODtUCa7ogiouxbpo/edit",type:301},{source:"/go/issue-priority-standards",destination:"https://docs.google.com/document/d/1x-BpbFHUKndv2ojd6LmS-At-pxd6SrIbgfYUepjP7D4/",type:301},{source:"/go/issue-triage-changes",destination:"https://docs.google.com/document/d/1KJVPMxzfFaL_gIB6Z3oNRTBKA-NP25YpM8xi3xUKbBY",type:301},{source:"/go/job",destination:"https://forms.gle/omPUhztq27KnH1LG8",type:301},{source:"/go/key-based-mouse-tracker-annotation",destination:"https://docs.google.com/document/d/18DCRSX4-KjJIrnru_Cv9cJjzQmUWM95r8n6uvbS45-E/edit",type:301},{source:"/go/known-values-annotation",destination:"https://docs.google.com/document/d/1WMxm3_E3w58339Wvjt-j5WaqTALNSwSePQs3p0fxW64/edit",type:301},{source:"/go/layered-material-widgets",destination:"https://docs.google.com/document/d/132QrLvsSI3KenJZfCHufXpiRvPeqt3cUMk5DjJa6HRs/edit?usp=sharing&resourcekey=0-LrvJWEP4mqc_P3wJJt2ttw",type:301},{source:"/go/layout-builder-optimization",destination:"https://docs.google.com/document/d/1H8Z48vZAemV0Kw0It65JMoGhqVlDLQErkKZN8-r9pdU",type:301},{source:"/go/leak-tracker-make-bots-blocking",destination:"https://docs.google.com/document/d/1O1ojL-E0DsinDvrmR2NIGh9FUo4YeCx7H6rmmJRY_Sc/edit",type:301},{source:"/go/leak-tracker-high-level-design",destination:"https://docs.google.com/document/d/158JfU9JKRqfhRPF5C0ceTuOAIWPber_MYftRiuTzlVE/edit?resourcekey=0-SFa6mZ69muVqA5eXi30wIQ",type:301},{source:"/go/legacy-material",destination:"https://docs.google.com/document/d/1REsg982YG2MlspsMOiNLpu8OIWkyehRRQUXHMU3tAAM/edit?usp=sharing",type:301},{source:"/go/lifecycle-debug-flag",destination:"https://docs.google.com/document/d/1WowGJhAMzYvwoyYLOzwjj1Jb0lwIjUpNfqvKjFWQZIM/edit",type:301},{source:"/go/link-widget",destination:"https://docs.google.com/document/d/1HMadUQ2g7BRoCYmUvUYPAALU520fFv9PoPDkoz0wjAc",type:301},{source:"/go/link-widget-2",destination:"https://docs.google.com/document/d/1-BJ4Rp6-glA9S__o97xDiNdd_lbuj7y6e394VE-5y4U",type:301},{source:"/go/lints-migration",destination:"/release/breaking-changes/flutter-lints-package",type:301},{source:"/go/localizing-datetime",destination:"https://docs.google.com/document/d/1QR3qLXWdroTVLbnAQ8mq-Ia6tsZ8NY3lmi7gySQAstU/edit",type:301},{source:"/go/mac-voiceover-text-editing",destination:"https://docs.google.com/document/d/19YP1o4Shba6NzQTBH_EWC8y1GUhKAbo9dan4digFbZs",type:301},{source:"/go/macros-for-leak-tracker",destination:"https://docs.google.com/document/d/1ireWmX4J5Jc6oDO1PmAXPlLdiAlCHvTz8SVC_Sg9KM8/edit?usp=sharing&resourcekey=0-yODb_SAStMgMefYpQeX8uQ",type:301},{source:"/go/make-dropdownmenuitem-value-param-required",destination:"https://docs.google.com/document/d/1x5jsgnLxI3wSDwXRzO0n5hdXKn2a_XTJcsXdjFZLX44/edit",type:301},{source:"/go/match-xcode-deployment-range",destination:"https://docs.google.com/document/d/1Y1WpbQPMOL3GvL8ow_OTD_-ENG3uuhS46CGRhLt12I8/edit?usp=sharing",type:301},{source:"/go/material-banner-updates",destination:"https://docs.google.com/document/d/12Jet1gW2B_QFxig5B4K7f_lrpGhkbjR3LYpsKd4ZtJs/edit?usp=sharing&resourcekey=0-CfFoZ-0oqWPtz2WH0Jj0aw",type:301},{source:"/go/material-button-migration-guide",destination:"https://docs.google.com/document/d/1yohSuYrvyya5V1hB6j9pJskavCdVq9sVeTqSoEPsWH0",type:301},{source:"/go/material-button-system-updates",destination:"https://docs.google.com/document/d/10Fbn59hiHkppqJ6y_1Rjwl7klN-OvJXQU3SFEqicpME/edit",type:301},{source:"/go/material-cupertino-framework-migration",destination:"https://docs.google.com/document/d/1LfHjsg6-WPtpfxxKwYBCokRdN8O92AB0xDk7TUR8JmQ/edit",type:301},{source:"/go/material-date-picker-redesign",destination:"https://docs.google.com/document/d/1AGKjBvO7EL2PuJGcwaa2PoCusjtTAvpYO7i_3A2vVpc/edit",type:301},{source:"/go/material-symbols",destination:"https://docs.google.com/document/d/1UHRKDl8-lzl_hW_K2AHnpMwvdPo0vGPbDI7mqACWXJY/edit?usp=sharing",type:301},{source:"/go/material-theme-system-updates",destination:"https://docs.google.com/document/d/1kzIOQN4QYfVsc5lMZgy_A-FWGXBAJBMySGqZqsJytcE/edit",type:301},{source:"/go/max-length-enforcement",destination:"https://docs.google.com/document/d/1S900lQaTPOsePnIeE7o3-Ia8f39VZaSv0JnjNyBfCvU",type:301},{source:"/go/medium-sized-code-samples",destination:"https://docs.google.com/document/d/1-jjYru2ljRSRSY4hn4qwLj9oQj8UiqrDOgY10-FE2tY/edit?usp=sharing",type:301},{source:"/go/migrate-flutter-wiki",destination:"https://docs.google.com/document/d/1naONKJd-eqPj8zEVfHfjGa5TCZNyJErBY4ca1gjSCq4/edit?usp=sharing",type:301},{source:"/go/migrate-flutter-wiki-spreadsheet",destination:"https://docs.google.com/spreadsheets/d/1x65189ZBdNiLRygpUYoU08pwvXD4M-Z157c6pm8deGI/edit?usp=sharing",type:301},{source:"/go/migrating-to-vertical-alignment",destination:"https://docs.google.com/document/d/1vi6d6On6EXN82Q8KmXSLbWNnsnm9YjWtTWhSyjPF59Q/edit?usp=sharing",type:301},{source:"/go/mixin-modifier",destination:"https://docs.google.com/document/d/1la2S1uJrNAawc1yja8hrSxFZJ0cFHnYopmaBYDLwMjg/edit?usp=sharing&resourcekey=0-br1LWMlYC63Q30VGiPtAHg",type:301},{source:"/go/mouse-tracker-no-longer-attaches-annotations",destination:"https://docs.google.com/document/d/1YuOcepqZjNknAMz1si2m-jAiLT4MP28XEzBcKLHnNiA/edit",type:301},{source:"/go/move-flutter-agnostic-types",destination:"https://docs.google.com/document/d/1qQokfeExIx3E7X_2ogFfZ4U5viBQflwVSKtlazPjgOY/edit?usp=sharing&resourcekey=0-XFum7OfSG2Nkvvq8w5QxdA",type:301},{source:"/go/move-mouse-tracker-to-rendering",destination:"https://docs.google.com/document/d/1dYNOTZ4kdq6ndNHopjUlrGlGBw3W-3jMbnoNJouIYtE/edit",type:301},{source:"/go/multi-view-embedder-apis",destination:"https://docs.google.com/document/d/1kegGJ235y1778-vzyyv90MgSHmYQcROTupMuLtEDBq0/edit?usp=sharing",type:301},{source:"/go/multi-view-on-android-ios",destination:"https://docs.google.com/document/d/1B0YT06IRIv0mnxOkXbEgA6lG5LGuZTtI5H6l1XAkLVY/edit?usp=sharing",type:301},{source:"/go/multi-view-on-android-ios-runner-api",destination:"https://docs.google.com/document/d/1u0WSfbH5oKyATIXsVK0OoyjOMSYXjI2xwnZ0I6QeoLE/edit?usp=sharing",type:301},{source:"/go/multi-view-pipeline-and-rasterizer",destination:"https://docs.google.com/document/d/1xoD02qOxt2OSe3eN1ARsBUUWNFawdrxC2JXUURx7218/edit?usp=sharing",type:301},{source:"/go/multi-view-sync-embedder-apis",destination:"https://docs.google.com/document/d/14z-e-x6M3P53ZMD6qBh4UaJ3nJdG_VdMNqGKERv31hw/edit?usp=sharing",type:301},{source:"/go/multi-view-sync-over-async",destination:"https://docs.google.com/document/d/14z-e-x6M3P53ZMD6qBh4UaJ3nJdG_VdMNqGKERv31hw/edit?usp=sharing",type:301},{source:"/go/multi-window-single-isolate",destination:"https://docs.google.com/document/d/1Wdqs79TY3b1VkOZMDmt12psg5AhO-q9k5-Uv28Snr8M/edit?resourcekey=0-qvOf6jo8bR9W4ozLrbLMcQ",type:301},{source:"/go/multi-window-status",destination:"https://docs.google.com/document/d/13E27tD8_9f6lDgwg3MpGNTV8XIRCZH3ByI-t9kI9IUM/edit?usp=sharing",type:301},{source:"/go/multi-window-api",destination:"https://docs.google.com/document/d/1eQG-IS7r4_S9_h50MY_hSGwUVtgSTRSLzu7MLzPNd2Y/edit",type:301},{source:"/go/multi-window-api-ffi",destination:"https://docs.google.com/document/d/1UEaxd_aIlsPMzkfB6oyeYaKzwHadrWGyMzOS33oSbK4/edit",type:301},{source:"/go/multi-window-experimental-apis",destination:"https://docs.google.com/document/d/1Muakcdx8Ktg72G5GiieRP-9swxl_5Uum1oEI89aBLSM/edit?usp=sharing",type:301},{source:"/go/multi-window-overlay",destination:"https://docs.google.com/document/d/1Z8R9Kd6Z1P9R5N8T5YpY89rraKmhSYXoJ284rRM-TF4/edit",type:301},{source:"/go/multiple-applications",destination:"https://docs.google.com/document/d/1alrr7qimNDazmQx5D80BSHh62V2OINO4UQ5N3HcPnmo/edit?resourcekey=0-wPs1Go9AiKR-yG0-xStuKw",type:301},{source:"/go/multiple-engines",destination:"https://docs.google.com/document/d/1NwiZPWHd1te46eP2GWwIezDV9CdMQkODAMuF5kWdtLw",type:301},{source:"/go/multiple-flutters",destination:"https://docs.google.com/document/d/1fdKRufqUzQvERcqNIUSq-GdabXc4k8VIsClzRElJ6KY",type:301},{source:"/go/multiple-views",destination:"https://docs.google.com/document/d/1Z7Qrb08dOnfB8IxPgsyujVn4MsDcYPUUku9CeF70_S0/edit?usp=sharing",type:301},{source:"/go/navigator-with-router",destination:"https://docs.google.com/document/d/1Q0jx0l4-xymph9O6zLaOY4d_f7YFpNWX_eGbzYxr9wY/edit",type:301},{source:"/go/nshc",destination:"https://docs.google.com/document/d/1uwHQ3ZEGN2cH6bFwa3CCXTTXCeDfOWw-kUa_B6oTMuA/edit",type:301},{source:"/go/null-safety-workshop",destination:"https://dartpad.cn/workshops.html?webserver=https://dartpad-workshops-io2021.web.app/null_safety_workshop",type:301},{source:"/go/nullable-cupertinothemedata-brightness",destination:"https://docs.google.com/document/d/1qivq0CdkWGst5LU5iTLFUe_LTfLY84679-NxWiDgJXg/edit",type:301},{source:"/go/ondirtycallbacks",destination:"https://docs.google.com/document/d/1Vk_QWC92fFGxx2oIrIjkCL0ZZFHxmrprlLedyQsnkus/edit?usp=sharing",type:301},{source:"/go/onmaploaded",destination:"https://docs.google.com/document/d/1ogwmAQOjbX6UoHnsQ1sQG2P0LRU2KRBED64jnjtBpIQ/edit?usp=sharing",type:301},{source:"/go/opengl-on-ios",destination:"https://docs.google.com/document/d/1kvrb6HeTRN4noAKO82o6x-Ii61PW-BQ-8s9YNtLgosM",type:301},{source:"/go/optimized-platform-view-layers",destination:"https://docs.google.com/document/d/1YHwVz7-F03psEzHxByGka_lIFaDV5K90BJMbNxQeK4k/edit?resourcekey=0-n4_VcUnMU-99sjJ6C1_Ycw#",type:301},{source:"/go/os-adaptive-shortcut-activator",destination:"https://docs.google.com/document/d/11NWj13MSDw1XQg4MpYIeqzcCFGuzQ_Cz7tYXW7fqzPY/edit?usp=sharing",type:301},{source:"/go/outline-input-border-padding-fix",destination:"https://docs.google.com/document/d/1QBM5oM9qPWVeFSPSqpXOFbdXV9dH9A9ABKsNMs1J2XU/edit?usp=sharing",type:301},{source:"/go/overridable-text-actions",destination:"https://docs.google.com/document/d/11vmEZTjB4_E4el1IjTo2VBI2d_fR7tjQWeCajsQc-q4/edit?usp=sharing",type:301},{source:"/go/package-release-strategy",destination:"https://docs.google.com/document/d/18kjoP-4LAXEllugVOQRg6vZELyD6MuxlKilLD4lFxSY/edit?usp=sharing",type:301},{source:"/go/packaged-ai-assets",destination:"https://docs.google.com/document/d/1k_X-Sp4GQyZP6k9lvZ1Itj0GvzQZuWl3iKzi5AIa69Q/edit?usp=sharing",type:301},{source:"/go/performance-android-orientation-changes",destination:"https://docs.google.com/document/d/1L7NMG8YfWXoAuCFPv9oX11M1FEWXKbyaWc03mOmXJGc/edit?usp=sharing",type:301},{source:"/go/performance-best-practices",destination:"https://docs.google.com/document/d/16bd3HtkuvzAk0uizDGTT3aNtjI8Mfr0f6C3ZVrYYqvI",type:301},{source:"/go/permissible-slider-interaction",destination:"https://docs.google.com/document/d/151iaqbK-rZSRI34NdkvfIk4RkzOpAevoJ87TwiXfTpM/edit?usp=sharing&resourcekey=0-o0Gx6nrgl-fpw7_zUdMaQA",type:301},{source:"/go/per-pr-release",destination:"https://docs.google.com/document/d/1wV2CuEKTxVgrVDghUrpipggqOt2D0TXARXGiZAFYUn8/edit?usp=sharing",type:301},{source:"/go/picture-lifecycle",destination:"https://docs.google.com/document/d/1aTBj38k6NSVsYRwySEBItlqxdQbjzurjmHsXAr3yGiI/edit?usp=sharing&resourcekey=0-TbKDu4BVInqphkzAlasBnw",type:301},{source:"/go/pigeon-native-interop",destination:"https://docs.google.com/document/d/17qlMtoBdsjdPEv69u58TV4v2P-cJ5zPv7ZFMmIU4BZs/edit?usp=sharing",type:301},{source:"/go/platform-api-breakages",destination:"https://docs.google.com/document/d/1OxDsf_eot7TlsRn57z-1_dGbvuqnMxO7QEGIAmOCZtA/edit?usp=sharing",type:301},{source:"/go/platform-based-key-events",destination:"https://docs.google.com/document/d/1FDuxxEh810XpY561SgeiyUR0gU2eVz5kRpCFI55ibec/edit",type:301},{source:"/go/platform-channels-in-federated-plugins",destination:"https://docs.google.com/document/d/1BSrDA_FjLU-3T0H774RocJ4IYyc0ytMl937rAimGJdg/edit?usp=sharing",type:301},{source:"/go/platform-interface-breaking-changes",destination:"https://docs.google.com/document/d/1LD7QjmzJZLCopUrFAAE98wOUQpjmguyGTN2wd_89Srs/edit#heading=h.xabf9lffxrkb",type:301},{source:"/go/platinum-tests",destination:"https://docs.google.com/document/d/1yqGEMsLp6dstSlq56E2BqNP2PinKB9Z7WXC3pGjcD7Y/edit?usp=sharing",type:301},{source:"/go/plugin-binding-review",destination:"https://docs.google.com/document/d/1-9Si_ocFYh-Wa1qKV4PV2ocywKDYdiR_1yO3twPvrfM",type:301},{source:"/go/plugin-platforms",destination:"/packages-and-plugins/developing-packages#plugin-platforms",type:301},{source:"/go/plugin-shared-ios-macos",destination:"https://docs.google.com/document/d/1JdgBrMXV0a6fnVoooILNTQB8dNCvLloT4D4TBkECQ6c/edit?usp=sharing&resourcekey=0-iPL3CzwOjUquabkMiucaHA",type:301},{source:"/go/plugin-support-for-custom-embeddings",destination:"https://docs.google.com/document/d/1AJTHdC20JhD3viR4JWTghagIztqL5jg_R9NFQmnwAMw/edit?usp=sharing&resourcekey=0-qAECjzHKB5tM47azrVnH1w",type:301},{source:"/go/plugins-list-migration",destination:"https://docs.google.com/document/d/1itYyHax0bzL3-hRtQd1zRPqJfOrLYih1fW0nPDJDytc/edit",type:301},{source:"/go/plugins-team",destination:"https://docs.google.com/forms/d/e/1FAIpQLSfpPqJYuL_RzLaTCjrWYw73Zrrei3YiU8B5eTrDBh4fuGhbXw/viewform?usp=sf_link",type:301},{source:"/go/post-decoupling-breaking-changes",destination:"https://docs.google.com/document/d/1SMxhPDWLgos9xGPj5NUzTVX7J6sPGtW9D8EDQNF30G4/edit?pli=1&tab=t.0",type:301},{source:"/go/profile-and-release-mode-for-custom-devices",destination:"https://docs.google.com/document/d/1jcMyJvsWLizYOIJAdyosLSW-Io0-E_MGsU_uL_Q4Wt8/edit?usp=sharing",type:301},{source:"/go/programmatic-sheet",destination:"https://docs.google.com/document/d/15A3q1QrcvEU82uG4heTCKV230depmaJZTIP5rEz7V8g/edit?usp=sharing&resourcekey=0-q-TH-9-LVmygnp6Ku4xKIg",type:301},{source:"/go/pub-automated-publishing",destination:"https://docs.google.com/document/d/1LSYVjDdgGNCc7p5Y2_hu8UA_Ms9MgZs3Jm974D1J344",type:301},{source:"/go/pub-workspace",destination:"https://docs.google.com/document/d/1UEEAGdWIgVf0X7o8WPQCPmL4LSzaGCfJTM0pURoDLfE/edit?usp=sharing&resourcekey=0-c5CMaOoc_pg3ZwJKMAM0og",type:301},{source:"/go/publish-on-homebrew",destination:"https://docs.google.com/document/d/1dk82qavQxT633LAonAM2xsqirWBmsqoHC4caJvYE584/edit?usp=sharing",type:301},{source:"/go/pull-request-revert-api",destination:"https://docs.google.com/document/d/1mVVetlCjv9PM5gtg57nipDFd5TvWsd24rXPWS0FzVvE/edit?usp=sharing&resourcekey=0-McwG6wn0s6YQ7qxHffkcdw",type:301},{source:"/go/pull-request-revert-api-v2",destination:"https://docs.google.com/document/d/1lfPVtrq_6YB-I6bEHEXRPeJCE32EvKxx-nSYmLpJIYI/edit?usp=sharing&resourcekey=0-BZghqoHCZBXuoQ2alTyRiw",type:301},{source:"/go/rasterizer-pipeline-improvements",destination:"https://docs.google.com/document/d/1Hg5Wfx8JTgYmLboxFRr5DDd9EfdrdEuMbNGGMvDjd6E/edit?usp=sharing",type:301},{source:"/go/reduce-ci-tests",destination:"https://docs.google.com/document/d/1-HRz-dXoIKjEgbCs9CF2-TO_3wSFK-V4ispXg-IoarY/edit?usp=sharing",type:301},{source:"/go/reference-plugin",destination:"https://docs.google.com/document/d/1NJFbRMVxVL9YS_FcWi7W08DsBr_eRAJtQI9FQkk9MXk/edit",type:301},{source:"/go/registered-actions",destination:"https://docs.google.com/document/d/1RrAWQ-rq-XcrjJx4Jegn8NdJKNHfLem6MkAJrI8Q_1w/edit?usp=sharing",type:301},{source:"/go/remove-fab-accent-theme-dependency",destination:"https://docs.google.com/document/d/1kmXWerkykXXjMfibsc9O105NocBGH3dGW8UL2VH5Q48/edit",type:301},{source:"/go/remove-include-flutter-groovy",destination:"https://docs.google.com/document/d/1OulURfRSWgJnnFA_cSup4ev7wrJwnZ7Siao_FGbLN9I",type:301},{source:"/go/reorderable-list-view-update",destination:"https://docs.google.com/document/d/1JzNtMQ-jnPnSHEBoi6IO0x2qMMylwhvRslEDcmqiwSs",type:301},{source:"/go/replace-block-semantics",destination:"https://docs.google.com/document/d/1niJnShCR3-PIMYo1a9lWdVySBqr_wmXYPvBXntvcc0c/edit",type:301},{source:"/go/respecting-tabcontroller-animateto-duration",destination:"https://docs.google.com/document/d/1wzSzUYstDM-Kg5kwskyXcEUX7QTb-lBOso7Z5ebrCTk/edit",type:301},{source:"/go/restoring-anonymous-routes",destination:"https://docs.google.com/document/d/1vnjDruoiDz0eEd4eVzg3IS6W_LRaFxNSlKWtU6iXp2M/edit",type:301},{source:"/go/rfc-32-bit-ios-support",destination:"https://docs.google.com/document/d/1Xz8B2w42ZGmrSdvQHo6LVLhiSZBIxnHxZxoZ-8oyRUc/edit",type:301},{source:"/go/rfc-32-bit-ios-unsupported",destination:"https://docs.google.com/document/d/1cc5EOsuTlbf4dTDTwmkD3aKjS8XEbVCIqi9BFct9XHM/edit?resourcekey=0-Iv0gXDx7nSDCe3YDfxDKqw",type:301},{source:"/go/rfc-android-j-deprecation",destination:"https://docs.google.com/document/d/1N06Pm1x19AIWorENk6OdmY5T8kMzPJUOZs8aL9VccG4/edit",type:301},{source:"/go/rfc-android-k-deprecation",destination:"https://docs.google.com/document/d/1gQGvMk2ydxieivDjO8zqM7DdwOBybKVgoUqZUOCuTo0/edit?usp=sharing&resourcekey=0-ew5kIQr2FPVp7qyydtBQeg",type:301},{source:"/go/rfc-ios8-deprecation",destination:"https://docs.google.com/document/d/1HtzJLUBnvi-VjcG3XEjwVHQGWeOzlrA77ozp9TvCWVE/edit",type:301},{source:"/go/roadmap",destination:"https://github.com/flutter/flutter/blob/main/docs/roadmap/Roadmap.md",type:301},{source:"/go/router-and-widgetsapp-integration",destination:"https://docs.google.com/document/d/1QodTFmwVr1yk8dyQvoqkeILxvm92oikB1bVhHTtp6R4/edit",type:301},{source:"/go/router-api-improvement",destination:"https://docs.google.com/document/d/1kbUPagtDl30jqYAq-mDMdd-ftHm3q9AMq55ufZCo9lE/edit?usp=sharing&resourcekey=0-JBqYh_UD3h9OSA8NS5OO4g",type:301},{source:"/go/routing-table-extraction",destination:"https://docs.google.com/document/d/1Oy7GR0Wo9ETctNMHK5oOjHJZJ3cwCFIcRswLYgE0O0E/edit?usp=sharing",type:301},{source:"/go/scaffold-messenger",destination:"https://docs.google.com/document/d/1TCH0T-X42z96lAcSkFttHAQMJ0MsvMojDKa6F4IQI3Y/edit?usp=sharing",type:301},{source:"/go/scalable-flutter-infrastructure",destination:"https://docs.google.com/document/d/19GEUwAwJbNI-gO9ziV_oDESB28E_Pqppwx8ku9jdEqY",type:301},{source:"/go/scale-selection-handles-ios-rich-text",destination:"https://docs.google.com/document/d/1XuvdYUzZQAxCLYT2H1DNtOi1s6fGmFE-cgmweaijfe4/edit?usp=sharing",type:301},{source:"/go/scrollable-alert-dialog",destination:"https://docs.google.com/document/d/1qtVfjoKXE8BtkNbraKk9IzfRcks5btkKcyE4iGVwkbg/edit",type:301},{source:"/go/sdk-per-platform-installers",destination:"https://docs.google.com/document/d/1VooN2bddQ52Z2B4qYi1Lp20PGhyYDr1AKaXwo9e7PCw",type:301},{source:"/go/semantics-roles",destination:"https://docs.google.com/document/d/1VRagJfHEbehVPa023xGUcFTqe5LgYGU2wYBmnNkwVmA/edit?usp=sharing",type:301},{source:"/go/semantics-role-system",destination:"https://docs.google.com/document/d/1WOEraK9VIh9dzpJ3mrXgenzfbpRxeISNAdgH8Sh80a4/edit?usp=sharing",type:301},{source:"/go/sfsymbols",destination:"https://docs.google.com/document/d/18V4ohqwp7fblJmhy7l9vVEPP1FGG4xXUorByjRHA19s/edit?usp=sharing&resourcekey=0-IVkjSy7jbMZ5FHPH_9yn9A",type:301},{source:"/go/shaders",destination:"https://docs.google.com/document/d/1z9K5LernwQ0LVAzfbAMW6ITx63QRdRsoax1NLYEfm4Y/edit",type:301},{source:"/go/sharding-mac-ios-builders",destination:"https://docs.google.com/document/d/1zLafqoFhKRMChUDGnnhzabnmhE2Vl1AWsrJzF8OWAGk/edit?usp=sharing",type:301},{source:"/go/simple-flutter-tool-memory-benchmarks",destination:"https://docs.google.com/document/d/1vlARGxdABMeZoj4HF0p075-81q7G9gv_GnDYgoF7e3I",type:301},{source:"/go/sixty-fps",destination:"https://docs.google.com/document/d/1FuNcBvAPghUyjeqQCOYxSt6lGDAQ1YxsNlOvrUx0Gko/edit",type:301},{source:"/go/slider-v2",destination:"https://docs.google.com/document/d/1NCuRe-TUp8u6-Yzx_wrXZcqAwv5NP8hEJwUYSxVECwU/edit",type:301},{source:"/go/sliver-flex-and-friends",destination:"https://docs.google.com/document/d/1W4_5oD5z7JHhUjuQYwS_NJRAv27Ih7IazcMm739O5JU/edit",type:301},{source:"/go/sliver-workshop",destination:"https://dartpad.cn/workshops.html?webserver=https://dartpad-workshops-io2021.web.app/getting_started_with_slivers",type:301},{source:"/go/smoothing-discrete-scroll-inputs",destination:"https://docs.google.com/document/d/136wxl8He3PF2UMOT51lPfeqKE2TWGQuQ1u1b-ZDgErM/edit?usp=sharing",type:301},{source:"/go/soft-hyphens",destination:"https://docs.google.com/document/d/1w_d53wb-RMuwXmXIPq67JrZYG97XF1mDaKEoKBDt8-E/edit?usp=sharing",type:301},{source:"/go/squircle-web",destination:"https://docs.google.com/document/d/1r5BDa0GBUpq6tAg7zqcaGDPMGhjvIIsZKB7c9gpYuzo/edit?usp=sharing",type:301},{source:"/go/state-restoration-design",destination:"https://docs.google.com/document/d/1KIiq5CdqnSXxQXbZIDy2Ukc-JHFyLak1JR8e2cm3eO4/edit",type:301},{source:"/go/stateful-macro",destination:"https://docs.google.com/document/d/1TMVFn2jXw705px7bUggk8vTvpLrUjxEG9mzb-cSqZuo/edit?usp=sharing&resourcekey=0-0s5mvWGH3OcW8GN-Rmr36A",type:301},{source:"/go/static-tooling-in-devtools",destination:"https://docs.google.com/document/d/1i6ISzzSKKDiiVftTnkCCvdgXEjK2eqYlPjCOKTjnvx8/edit?resourcekey=0-uyAiZEjFplyibsAkDAqKJw#",type:301},{source:"/go/storekit-2",destination:"https://docs.google.com/document/d/1x9t0T0pESDtz4Yc3jvIhfrvg7HM93AQcWlHQ4N6HNxc/edit?usp=sharing&resourcekey=0-ufh9Ko-eUOaX53yOEVUGDg",type:301},{source:"/go/strategy-2022",destination:"https://docs.google.com/document/d/e/2PACX-1vTI9X2XHN_IY8wDO4epQSD1CkRT8WDxf2CEExp5Ef4Id206UOMopkYqU73FvAnnYG6NAecNSDo9TaEO/pub",type:301},{source:"/go/strategy-2023",destination:"https://docs.google.com/document/d/e/2PACX-1vRknZ4Jkc-pWSMsDDyKwMrry7k2BSL_I94JCCQrg8FiHuy4fcypkgIVFbQVKPmzDQHfd20uZf2rFiXP/pub",type:301},{source:"/go/string-annotation",destination:"https://docs.google.com/document/d/18NRf-ziYvPCLr2xFoUqfRtanfZysrUvLAUz-BM_D2Ac",type:301},{source:"/go/studio-rasterization-context-for-multi-view",destination:"https://docs.google.com/document/d/1Eqb8xeoRKpLq2OVkJX_ux3azVLGJgJcaY5uSWzqdc_4/edit",type:301},{source:"/go/subpixel-antialiasing",destination:"https://docs.google.com/document/d/1yEycgo5ivZ_lu2MAnMBLreZvROFdamy9-9q-QvMvL9U/edit?usp=sharing",type:301},{source:"/go/subresource-integrity",destination:"https://docs.google.com/document/d/1bzmkJefUqHNsEcHnGdqBKqRKhHifiOqmryDMJfcAGn0/edit",type:301},{source:"/go/supporting-dart-callbacks",destination:"https://docs.google.com/document/d/1k7OimxbxXzdv3U7-TfB88yG5hIScN3TH6Jcvdcl4izM/edit",type:301},{source:"/go/swift-package-manager-plugins",destination:"https://docs.google.com/document/d/10S7anpgWdJ0wNCgsse8MvHY2PShrr9PeuufwYHi5v6U/edit",type:301},{source:"/go/swift-package-manager-plugins-v2",destination:"https://docs.google.com/document/d/1oUvM5e2a3QrKAk9pTPExPp3my4FD4lYz9Z-EXsUGuHI/edit?usp=sharing&resourcekey=0-Vu8vKukw0Dqqv7pW5aIxKQ",type:301},{source:"/go/swift-package-manager-plugins-v3",destination:"https://docs.google.com/document/d/1aoa-t6zZBc6TosCa8N41w8aA8O4Z5yqdV4DvSRjWC54/edit?usp=sharing",type:301},{source:"/go/synchronized-widgettester",destination:"https://docs.google.com/document/d/1VumsuG6dEFUVpPQLqqKJnhI0CoIS9fCAMN-NFHIPmo0/edit",type:301},{source:"/go/system-mouse-cursor",destination:"https://docs.google.com/document/d/1bJLRy6flZ0wDCbpl2QA8SURUWXIvRJKMRRemxlOo1cA/edit",type:301},{source:"/go/system-ui",destination:"https://docs.google.com/document/d/1JwQ7gdJ1evQ-IfDu7JjouwO8JXYC6fIw3TJzAYNWPPo/edit",type:301},{source:"/go/table-cell-span",destination:"https://docs.google.com/document/d/1OXTnWhI1bjZEfUsE3Cy8tm32ewMIwqKLXBKZPgTwGTM/edit?usp=sharing",type:301},{source:"/go/table-development",destination:"https://docs.google.com/document/d/1fCE-zQNql0nnqJXhycpg902lhL7jrOOz-6sT8s8tv5c/edit?usp=sharing",type:301},{source:"/go/table-view",destination:"https://docs.google.com/document/d/15ecTZE1g3WeswLGFWrnEgMP6SyL6jDRdxOgPsczOcV0/edit?usp=sharing&resourcekey=0-yNd_qFhiPjz6z2TgezWc0A",type:301},{source:"/go/table-view-merged-cells",destination:"https://docs.google.com/document/d/1UekXjG_VKmWYbsxDEzMqTb7F-6oUr05v998n5IqtVWs/edit?usp=sharing",type:301},{source:"/go/tabs-and-text-fields",destination:"https://docs.google.com/document/d/1aHucsI0NWGWu2Dm_XFsBLxiTgJRM8h2XBB7PVAnVxlU/edit?usp=sharing&resourcekey=0-zLbXFlP_A2e_Yoi43vdiiw",type:301},{source:"/go/take-flutter-home",destination:"https://github.com/flutter/put-flutter-to-work",type:301},{source:"/go/template",destination:"https://docs.google.com/document/d/1SFRO8U2toOlAaZ38dsuEU7Wm5fn41wvBCWKiwADqfmw/edit",type:301},{source:"/go/test-all-platforms",destination:"https://docs.google.com/document/d/1-gw2zYFs_jBqsFPpXRonRNLYn6XNgvm34jc9HT84VKE/edit?usp=sharing",type:301},{source:"/go/test-widgets-flutter-binding-clock",destination:"https://docs.google.com/document/d/1EkkLbECNBwHgddBQAZqEy7iQLTIxR1rgChKzxcLwhio/edit",type:301},{source:"/go/testing-code-samples",destination:"https://docs.google.com/document/d/11JXF-9d0u1jGJ9-gdpMGAZr5YudAiyHhXI_pT2vTpnw/edit?usp=sharing",type:301},{source:"/go/text-editing-actions",destination:"https://docs.google.com/document/d/1QaVIr1bbOWJGNyyNsB75sXgTDRMuxP268sLGTBNDut0/edit?usp=sharing",type:301},{source:"/go/text-editing-deltas",destination:"https://docs.google.com/document/d/1PXNd_LwJudiUTnCM2AXRxbd98_p4BlFf6qFhEhv3wvs/edit?usp=sharing",type:301},{source:"/go/text-editing-magnifying-glass",destination:"https://docs.google.com/document/d/1RWq0Kd_xsHR8j7IXtgc25feV3RV8Hzq2KSQEVaDDXUs/edit?resourcekey=0-qLXzpPdvKRwQM8nlCijclQ",type:301},{source:"/go/text-editing-model",destination:"https://docs.google.com/document/d/1lkpg4dfVZif9NJ_dDQ01QkwQC3OqzhUFahhjgv_rcbM/edit#",type:301},{source:"/go/text-field-characters",destination:"https://docs.google.com/document/d/1OOFW0PEZf0orBl445YXJ3nfjyKOqZdmeQ6KU3glUh7s/edit",type:301},{source:"/go/text-selection-menu-appearance",destination:"https://docs.google.com/document/d/1Or32nViSjym0Sk29HccxEzcEITj2oWdielOaeR5cmiY/edit",type:301},{source:"/go/text-selection-menu-customization",destination:"https://docs.google.com/document/d/1hyay1TyUZB7DXzWw45-ruGMZM1yCMWEnC3DzOJYemuc/edit",type:301},{source:"/go/text-selection-menu-modernization",destination:"https://docs.google.com/document/d/1qSEvbgi3m-OvB_dUKch8LHOk-iyPFeLgCsXbK0bI2DA/edit",type:301},{source:"/go/text-selection-programatically",destination:"https://docs.google.com/document/d/1NK4GJ0Wk5eJ3IUw_9oAtz1oYgZ-Sn-kAKHxTvsgr75o/edit?usp=sharing",type:301},{source:"/go/text-selection-theme",destination:"https://docs.google.com/document/d/1sCe7Y_lhREljtn6m0Uu_EycbS82zRvWnNtkfEwFX9W0",type:301},{source:"/go/texttheme-m3",destination:"https://docs.google.com/document/d/1y3K08vL9rMTsGmF_T65fXmWJbsPZohvaVB3T6JuqgjM/edit?resourcekey=0-Gnl-tX58L4yPdV3NgeXFBg",type:301},{source:"/go/texture-to-image",destination:"https://docs.google.com/document/d/12nRNRFRAxikkG8ojIR1a_x8FR7c99TVdFstuRt8kiEQ/edit?usp=sharing",type:301},{source:"/go/theme-extensions",destination:"https://docs.google.com/document/d/1LbD4JqBgAfHex02oR3r2jyu9lTBBNBmyec2ovT59Kr8/edit?usp=sharing",type:301},{source:"/go/tool-announcements",destination:"https://docs.google.com/document/d/1Lv9pkmouTPz5BoRJn441tNdVaLvw8pEtZqLUW4u0HLo/edit?resourcekey=0-8TKBpp9OgxmqvJSqLgtyoQ",type:301},{source:"/go/tool-integration-test-support",destination:"https://docs.google.com/document/d/1jMMZpRAiQC2XTUFnzFsBrWwMsf7KyMuCScYgrJQJOV0/edit?resourcekey=0-ne9HbH1hXCHcIglomNfwtw",type:301},{source:"/go/top-errors-analysis",destination:"https://docs.google.com/document/d/1ZJ9t_uPeXqZnoDOIVes_Yu2BBxP42l99nSfHQPfswZw/edit?usp=sharing",type:301},{source:"/go/towards-improved-performance-tooling",destination:"https://docs.google.com/document/d/1wSDNcG0ww2V6JX1EE8avilCwnOiRVy83zSCWt916O0o",type:301},{source:"/go/tracking-material-states",destination:"https://docs.google.com/document/d/1PJdsOoXhWdhnpYKlW5Nm2Di3Di5XARoYyHerMwWovXE",type:301},{source:"/go/trackpad-gestures",destination:"https://docs.google.com/document/d/1oRvebwjpsC3KlxN1gOYnEdxtNpQDYpPtUFAkmTUe-K8/edit?usp=sharing&resourcekey=0-pt4_T7uggSTrsq2gWeGsYQ",type:301},{source:"/go/transitions-everywhere",destination:"https://docs.google.com/document/d/1qvznbZ-W0g90zkJ8h4k0aPgrpARo4CZUupVzq8la7Cw",type:301},{source:"/go/triage-2022-rfp",destination:"https://docs.google.com/document/d/1Kyrh1WijM04XqtUkVbL2uwDthlG9v3sljgl9HRlU4bU/edit",type:301},{source:"/go/triage-2023-rfc",destination:"https://docs.google.com/document/d/1RBvsolWL9nUkcEFhPZV4b-tstVUDHfHKzs-uQ3HiX-w/edit",type:301},{source:"/go/try",destination:"https://github.com/flutter/put-flutter-to-work",type:301},{source:"/go/ui-imitation-games",destination:"https://docs.google.com/document/d/1SbMjMiFhD2OZGTT3TCAOx6yfG-SYQ5F_fn7wwlZMumM/edit",type:301},{source:"/go/union-typed-transform-stack-in-hit-test",destination:"https://docs.google.com/document/d/1EsH7g-oyQIDZpRteg94iKJKgD7kVngZWq9ngDe6ORbM/edit?usp=sharing",type:301},{source:"/go/unobstructed-platform-views",destination:"https://docs.google.com/document/d/1_P3wa_nMqnhKsy-lDlNxT9GThZX2WhfVym4O4M7Q9qs/edit#",type:301},{source:"/go/unpin-flutter-sdk-dependencies",destination:"https://docs.google.com/document/d/1eq7DU0DvNwjlQRbA_euts91OXncUXtBomxDNCr60lb4/edit?usp=sharing",type:301},{source:"/go/unwrapping-widget-keys",destination:"https://docs.google.com/document/d/1Fc9ZYTTxlJUAfGeQzf83wXuV-wSiRZFHhMgwoUNukhI",type:301},{source:"/go/update-psc",destination:"https://docs.google.com/document/d/12OQx7h8UQzzAi0Kxh-saDC2dg7h2fghCCzwJ0ysPmZE/edit?usp=sharing&resourcekey=0-ATO-1Er3HO2HITm59I0IdA",type:301},{source:"/go/update-scrollbars",destination:"https://docs.google.com/document/d/1mRlc-sRyadE6301aZsD1LJkPG2B9K97Bg_GDHvFhMQI/edit?usp=sharing&resourcekey=0-v4Gk8H280RaPo5qClmDqpA",type:301},{source:"/go/update-text-theme-api",destination:"https://docs.google.com/document/d/1B1s4mm6OYM7mKQ3vZfSTI2HR_KljB78gN6oBHg_zYUs/edit",type:301},{source:"/go/updating-material-3-sliders",destination:"https://docs.google.com/document/d/1JQogsq7WdDt9k4BeBxLfi6CwsA_795tLFZlcFDaB6Gk/edit?usp=sharing",type:301},{source:"/go/use-dart-style-in-flutter-engine",destination:"https://docs.google.com/document/d/1E2ZLNasExXMpSYcxWrd5qSp24WmhIPiFq9FjBC5GoVY?resourcekey=0-bmXuMwfoCn8a9QdQiMd3hA",type:301},{source:"/go/using-widget-state-property",destination:"https://docs.google.com/document/d/1PYnxkFoi3HjBEyuSPonNHJHhsXDc6OOXd-7b4KmfC3g/edit#heading=h.pub7jnop54q0",type:301},{source:"/go/variable-refresh-rate",destination:"https://docs.google.com/document/d/1O-ot6MydAl5pAr_XGnpR-Qq5A5CPDF6edaPu8xQtgCQ/edit?usp=sharing&resourcekey=0-LlXeGtGRC67XL4NrGoc91A",type:301},{source:"/go/vector-graphics",destination:"https://docs.google.com/document/d/1YWffrlc6ZqRwfIiR1qwp1AOkS9JyA_lEURI8p5PsZlg/edit",type:301},{source:"/go/verbatim-logical-keys-for-non-latin-layout",destination:"https://docs.google.com/document/d/1ZNgNxito-NVUS1JKlcjdzHUcKyyiupy8Za-jb131dD4/edit?usp=sharing&resourcekey=0-eeEZ5X0jAzuqSTdmPWlv0w",type:301},{source:"/go/video-player-background-playback",destination:"https://docs.google.com/document/d/12WgZg2qzpCGyCRgZbG4Jr8msAV8Jd4_MTzqWimhg56M/edit?usp=sharing",type:301},{source:"/go/video-player-drm",destination:"https://docs.google.com/document/d/1T4LRRsicr_JuSkXBAXEcv7-9BnYPhmwgYnr1d6G6_o8/edit?usp=sharing",type:301},{source:"/go/view-metrics-overrides",destination:"https://docs.google.com/document/d/1SqDUerkvUmidI8-ulfW5kPYmXS3RQmJY6vkNVby4vAI/edit?usp=sharing",type:301},{source:"/go/web-add-to-app",destination:"https://docs.google.com/document/d/1rFM0qmYds1JkntTruBh8eO72xbT2KoP9JdbizucAAwQ/edit",type:301},{source:"/go/web-astral-projections",destination:"https://docs.google.com/document/d/1pvH-J8opXsjntTpFf1bbsbU8N1vFd8tPKvBgcNn8UKQ",type:301},{source:"/go/web-cleanup-service-worker",destination:"https://docs.google.com/document/d/1czOm3Hmy_oIq3NJStezb9AjwkKyta3NospkCy_DDv9E/edit",type:301},{source:"/go/web-declarative-bootstrap",destination:"https://docs.google.com/document/d/1jVXxC0tNDW45ypfVESyHipL2lHCX32GmFyJNO0u9c6Y/edit?resourcekey=0-AQ8z_0_U8Vq3JBdyracNuQ",type:301},{source:"/go/web-development-proxy-server",destination:"https://docs.google.com/document/d/1Ud9D3F0GxB5Ocoo5NnAy7PH5oo3qxvALxUlAXMCANJ0/edit?usp=sharing",type:301},{source:"/go/web-multiview-js-api",destination:"https://docs.google.com/document/d/1ixwPBG7YIHEONc15t9SOmrfgDK3gghvkk7it_8AFOmw/edit?resourcekey=0-VQC2nby6Coe5OG-R833yXw",type:301},{source:"/go/web-native-text-editing",destination:"https://docs.google.com/document/d/1t6qAX46tsR1tdBS42yro6G_5Igtrj7WzmKKiUI_JC-k/edit",type:301},{source:"/go/web-plugins-layout",destination:"https://docs.google.com/document/d/1PeS-QSAFydHXhjZrqkub-GRPMs83roh8VwhbUScWuGQ",type:301},{source:"/go/web-programmatic-bootstrap",destination:"https://docs.google.com/document/d/13kVA40gQ3T0FLqmV4w5rNvLHjmU6XWFbb7j0_YV7k9M",type:301},{source:"/go/web-renderer-options",destination:"https://docs.google.com/document/d/1aY0iU16wf_sdT7nwfpjgT-IatHNfF3slTiYHKmxcIog",type:301},{source:"/go/web-renderer-unification",destination:"https://docs.google.com/document/d/1QRUMJ-Y6BHgqr7NBZBxv1LWkX2S6B3bhr2BxSUnmDGg",type:301},{source:"/go/web-slot-content",destination:"https://docs.google.com/document/d/1U6aCSuzQsFpOP8_OseL-fwl2-MC2bxJAsgt2R_-sC30",type:301},{source:"/go/webview_flutter_4_interface",destination:"https://docs.google.com/document/d/14tZpyj5oxB6a5ugaR7-kQrxD2wBgctlK5jxwvItv0LI/edit?usp=sharing&resourcekey=0-M5oUr3Pm3f5wtE7v4aQbkQ",type:301},{source:"/go/wide-gamut-framework",destination:"https://docs.google.com/document/d/1JaJg34uB7bVssr3oyS-QLe2FlZHUIHcR6aG83JlKwak",type:301},{source:"/go/widget-budget",destination:"https://docs.google.com/document/d/1JTmf7ae8hWJ3zzqhI-__I9DcUJdQ3TopWsJbKyNDO5A/edit?usp=sharing&resourcekey=0--A0AbM19K-zDXRmIIzaUAg",type:301},{source:"/go/widget-previews-architecture",destination:"https://docs.google.com/document/d/1iMHDjC8HY_0xoOh1soxIf3MWLCtz4nD_Vn2goodO5YA/edit?usp=sharing",type:301},{source:"/go/widget-test-frame-precision",destination:"https://docs.google.com/document/d/1lECLbcmfWdyZFUG5TTGtem3l_SEefcJWHwPO_aZIqwM/edit?usp=sharing&resourcekey=0-6L6P_D571XnvK5oIfpe4MQ",type:301},{source:"/go/widget-tree-image-cache",destination:"https://docs.google.com/document/d/1deEtxZk1VYRmzvkL4gTb3sEnjBrHejQkWObQ4yrP5jE/edit?pli=1#",type:301},{source:"/go/widgetspan-in-selectabletext",destination:"https://docs.google.com/document/d/1nrVRytWVF-1hr8LvUKyENE5s074UInni9ZiColtIIxI",type:301},{source:"/go/windows-arm64",destination:"https://docs.google.com/document/d/1D60WWnAswtDEyr-fsTgH-dMn94xN3w-6RIt8Vm1CUIQ/edit?usp=sharing",type:301},{source:"/go/windows-multi-view-ownership-updates",destination:"https://docs.google.com/document/d/1QSnnu4SK0H_Zuik_x2ceHc8KTpxcG_HDS9KSm6xd5iY/edit?usp=sharing",type:301},{source:"/go/windows-x86-arm64-support",destination:"https://docs.google.com/document/d/1gAGqtTAjO0GntR8bPonIO1aZJnTghPCI_PHJPdNzEmo/edit?resourcekey=0-l1tL7iai47yw3bMl9IcpHw",type:301},{source:"/go/wrap-layout",destination:"https://docs.google.com/document/d/1auZtWT1T5CkUKOUTUld8rF91iN7PvQoOF0IlBNXiDSo/edit?usp=sharing",type:301},{source:"/go/wrap-popupmenu-with-safearea",destination:"https://docs.google.com/document/d/15uBmyEKiOeYGYt1PuBVf4SFK5YhH07EP9ylWP-H9mVE/edit?usp=sharing",type:301},{source:"/go/zero-rebuilds",destination:"https://docs.google.com/document/d/1MfU6gkgIgXCxa5E25sPYuAP5Bmgehyl3Hk7yDH24zl0/edit?usp=sharing",type:301},{source:"/to/actions-shortcuts",destination:"/ui/interactivity/actions-and-shortcuts",type:301},{source:"/to/add-desktop-support",destination:"/platform-integration/desktop#add-desktop-support-to-an-existing-flutter-app",type:301},{source:"/to/add-to-app",destination:"/add-to-app",type:301},{source:"/to/add-swift-package-manager-manually",destination:"/packages-and-plugins/swift-package-manager/for-app-developers#add-to-a-flutter-app-manually",type:301},{source:"/to/add-web-support",destination:"/platform-integration/web/building#add-web-support-to-an-existing-app",type:301},{source:"/to/android-ffi",destination:"/platform-integration/android/c-interop",type:301},{source:"/to/android-setup",destination:"/platform-integration/android/setup",type:301},{source:"/to/android-supported-architectures",destination:"/deployment/android#what-are-the-supported-target-architectures",type:301},{source:"/to/asset-from-package",destination:"/ui/assets/assets-and-images#from-packages",type:301},{source:"/to/brick-breaker",destination:"https://codelabs.developers.google.cn/codelabs/flutter-flame-brick-breaker",type:301},{source:"/to/build-modes",destination:"/testing/build-modes",type:301},{source:"/to/baa",destination:"https://flutter.dev/events/building-agentic-apps",type:301},{source:"/to/china-setup",destination:"/community/china",type:301},{source:"/to/ci-yaml",destination:"https://github.com/flutter/flutter/blob/main/docs/infra/Ci-Best-Practices.md",type:301},{source:"/to/crash-reporting",destination:"/reference/crash-reporting",type:301},{source:"/to/debug-mode",destination:"/testing/build-modes#debug",type:301},{source:"/to/debug-render-layer",destination:"/testing/code-debugging#print-the-render-tree",type:301},{source:"/to/deep-link-tool",destination:"/ui/navigation/deep-linking",type:301},{source:"/to/deep-linking",destination:"/ui/navigation/deep-linking",type:301},{source:"/to/develop-packages",destination:"/packages-and-plugins/developing-packages",type:301},{source:"/to/develop-plugins",destination:"/packages-and-plugins/developing-packages#plugin",type:301},{source:"/to/edit-plugins",destination:"/packages-and-plugins/developing-packages#edit-plugin-package",type:301},{source:"/to/editor-setup",destination:"/tools/editors",type:301},{source:"/to/engine-artifacts",destination:"https://github.com/flutter/flutter/blob/main/docs/tool/Engine-artifacts.md",type:301},{source:"/to/engine-rbe",destination:"https://github.com/flutter/flutter/blob/main/engine/src/flutter/docs/rbe/rbe.md",type:301},{source:"/to/engine-tool",destination:"https://github.com/flutter/flutter/blob/main/engine/src/flutter/tools/engine_tool/README.md",type:301},{source:"/to/engine-tool-bug",destination:"https://github.com/flutter/flutter/issues/new?labels=e:%20engine-tool",type:301},{source:"/to/endorsed-federated-plugin",destination:"/packages-and-plugins/developing-packages#endorsed-federated-plugin",type:301},{source:"/to/et",destination:"https://docs.flutter.cn/to/engine-tool",type:301},{source:"/to/experimental-branches",destination:"https://github.com/flutter/flutter/blob/main/docs/infra/Experimental-Branch.md",type:301},{source:"/to/favorites",destination:"/packages-and-plugins/favorites",type:301},{source:"/to/feature-flags",destination:"https://github.com/flutter/flutter/blob/main/docs/contributing/Feature-flags.md",type:301},{source:"/to/federated-plugins",destination:"/packages-and-plugins/developing-packages#federated-plugins",type:301},{source:"/to/ffi-package",destination:"/packages-and-plugins/developing-packages#plugin-ffi",type:301},{source:"/to/flutter-gen-deprecation",destination:"/release/breaking-changes/flutter-generate-i10n-source",type:301},{source:"/to/flutter-plugins-configuration",destination:"/release/breaking-changes/flutter-plugins-configuration",type:301},{source:"/to/flutter-fix",destination:"/tools/flutter-fix",type:301},{source:"/to/flutter-gradle-plugin-apply",destination:"/release/breaking-changes/flutter-gradle-plugin-apply",type:301},{source:"/to/flutter-test-docs",destination:"https://api.flutter-io.cn/flutter/flutter_test/flutter_test-library.html",type:301},{source:"/to/font-from-package",destination:"/cookbook/design/package-fonts#use",type:301},{source:"/to/gesture-disambiguation",destination:"/ui/interactivity/gestures#gesture-disambiguation",type:301},{source:"/to/gestures",destination:"/ui/interactivity/gestures",type:301},{source:"/to/handle-errors",destination:"/testing/errors",type:301},{source:"/to/hot-reload",destination:"/tools/hot-reload",type:301},{source:"/to/impeller",destination:"/perf/impeller",type:301},{source:"/to/install",destination:"/get-started",type:301},{source:"/to/integrate-android-archive",destination:"/add-to-app/android/project-setup",type:301},{source:"/to/integration-test-on-web",destination:"/testing/integration-tests#test-in-a-web-browser",type:301},{source:"/to/integration-testing",destination:"/cookbook/testing/integration/introduction",type:301},{source:"/to/intellij-setup",destination:"/tools/android-studio#setup",type:301},{source:"/to/internationalization",destination:"/ui/internationalization",type:301},{source:"/to/ios-add-to-app-embed-setup",destination:"/add-to-app/ios/project-setup#embed-a-flutter-module-in-your-ios-app",type:301},{source:"/to/ios-app-signing",destination:"/deployment/ios#review-xcode-project-settings",type:301},{source:"/to/ios-create-flutter-engine",destination:"/add-to-app/ios/add-flutter-screen#create-a-flutterengine",type:301},{source:"/to/ios-deploy",destination:"/deployment/ios",type:301},{source:"/to/ios-development-team",destination:"/deployment/ios#review-xcode-project-settings",type:301},{source:"/to/ios-ffi",destination:"/platform-integration/ios/c-interop",type:301},{source:"/to/ios-minimum-target",destination:"/deployment/ios#review-xcode-project-settings",type:301},{source:"/to/to/java-gradle-incompatibility",destination:"/release/breaking-changes/android-java-gradle-migration-guide",type:301},{source:"/to/java-gradle-incompatibility",destination:"/release/breaking-changes/android-java-gradle-migration-guide",type:301},{source:"/to/linux-android-setup",destination:"/platform-integration/android/setup",type:301},{source:"/to/macos-android-setup",destination:"/platform-integration/android/setup",type:301},{source:"/to/macos-deploy",destination:"/deployment/macos",type:301},{source:"/to/macos-entitlements",destination:"/platform-integration/macos/building#entitlements-and-the-app-sandbox",type:301},{source:"/to/macos-ffi",destination:"/platform-integration/macos/c-interop",type:301},{source:"/to/macos-ios-setup",destination:"/platform-integration/ios/setup",type:301},{source:"/to/macos-minimum-target",destination:"/deployment/ios#review-xcode-project-settings",type:301},{source:"/to/minimize-layout-passes",destination:"/perf/best-practices#minimize-layout-passes-caused-by-intrinsic-operations",type:301},{source:"/to/performance-overlay",destination:"/perf/ui-performance#performance-overlay",type:301},{source:"/to/platform-channels",destination:"/platform-integration/platform-channels",type:301},{source:"/to/platform-channels-codec",destination:"/platform-integration/platform-channels#codec",type:301},{source:"/to/platform-plugins",destination:"/packages-and-plugins/using-packages",type:301},{source:"/to/platform-setup",destination:"/platform-integration#setup",type:301},{source:"/to/previous-releases",destination:"/install/archive",type:301},{source:"/to/profile-mode",destination:"/testing/build-modes#profile",type:301},{source:"/to/pub-system-cache",destination:"https://dart.cn/tools/pub/glossary#system-cache",type:301},{source:"/to/pubspec-plugin-platforms",destination:"/packages-and-plugins/developing-packages#plugin-platforms",type:301},{source:"/to/recommend-const",destination:"/perf/best-practices#control-build-cost",type:301},{source:"/to/reference-keystore",destination:"/deployment/android#reference-the-keystore-from-the-app",type:301},{source:"/to/release-mode",destination:"/testing/build-modes#release",type:301},{source:"/to/report-bugs",destination:"/resources/bug-reports",type:301},{source:"/to/resolution-aware-images",destination:"/ui/assets/assets-and-images#resolution-aware",type:301},{source:"/to/review-gradle-config",destination:"/deployment/android#review-the-gradle-build-configuration",type:301},{source:"/to/roadmap",destination:"https://github.com/flutter/flutter/blob/main/docs/roadmap/Roadmap.md",type:301},{source:"/to/save-layer-perf",destination:"/perf/best-practices#use-savelayer-thoughtfully",type:301},{source:"/to/spm",destination:"/packages-and-plugins/swift-package-manager",type:301},{source:"/to/state-management-sample",destination:"/data-and-backend/state-mgmt/simple",type:301},{source:"/to/switch-flutter-version",destination:"/install/upgrade#switch-to-a-specific-flutter-version",type:301},{source:"/to/team-infra",destination:"https://github.com/flutter/flutter/blob/main/docs/triage/Infra-Triage.md",type:301},{source:"/to/template",destination:"https://docs.flutter.cn/go/template",type:301},{source:"/to/test-drive",destination:"/install",type:301},{source:"/to/track-widget-creation",destination:"/tools/devtools/inspector#track-widget-creation",type:301},{source:"/to/troubleshoot-devices",destination:"/install/troubleshoot",type:301},{source:"/to/unbounded-constraints",destination:"/ui/layout/constraints#unbounded",type:301},{source:"/to/uiscene-migration",destination:"/release/breaking-changes/uiscenedelegate",type:301},{source:"/to/unit-testing",destination:"/cookbook/testing/unit/introduction",type:301},{source:"/to/update-linux-path",destination:"/install/add-to-path#linux",type:301},{source:"/to/update-macos-path",destination:"/install/add-to-path#macos",type:301},{source:"/to/update-windows-path",destination:"/install/add-to-path#windows",type:301},{source:"/to/use-mirror-site",destination:"/community/china#configure-your-machine-to-use-a-mirror-site",type:301},{source:"/to/use-profile-mode",destination:"/perf/ui-performance#run-in-profile-mode",type:301},{source:"/to/wasm",destination:"/platform-integration/web/wasm",type:301},{source:"/to/web-bootstrapping",destination:"/platform-integration/web/initialization",type:301},{source:"/to/web-html-renderer-deprecation",destination:"https://github.com/flutter/flutter/issues/145954",type:301},{source:"/to/web-images",destination:"/platform-integration/web/web-images",type:301},{source:"/to/web-multiview-runwidget",destination:"/platform-integration/web/embedding-flutter-web#replace-runapp-by-runwidget-in-dart",type:301},{source:"/to/web-renderers",destination:"/platform-integration/web/renderers",type:301},{source:"/to/widget-previews",destination:"/tools/widget-previewer",type:301},{source:"/to/widget-testing",destination:"/cookbook/testing/widget/introduction",type:301},{source:"/to/windows-android-setup",destination:"/platform-integration/android/setup",type:301},{source:"/to/windows-ffi",destination:"/platform-integration/windows/building#integrating-with-windows",type:301},{source:"/to/windows-setup",destination:"/platform-integration/windows/setup",type:301},{source:"/to/xcode-name-config",destination:"/deployment/ios#review-xcode-project-settings",type:301}],headers:[{source:"/f/*.json",headers:[{key:"Access-Control-Allow-Origin",value:"*"}]},{source:"**/*.@(avif|jpg|jpeg|gif|png|webp|webm|svg|md|css|js)",headers:[{key:"Cache-Control",value:"max-age=3600"},{key:"Access-Control-Allow-Origin",value:"*"}]},{source:"/assets/images/*.@(jpg|jpeg|png|webp|avif)",headers:[{key:"Cache-Control",value:"max-age=604800"},{key:"Access-Control-Allow-Origin",value:"*"}]},{source:"**",headers:[{key:"Referrer-Policy",value:"strict-origin-when-cross-origin"},{key:"X-Content-Type-Options",value:"nosniff"}]}]},emulators:{hosting:{port:5502}}},ze=wo;if(typeof window<"u"){let n=window.location.pathname,t=Xe(n);console.log("Redirect: ",t),t&&(window.location.href=t)}if(typeof window<"u"){let n=new URL(window.location.href),t=n.pathname,e=!t.toLowerCase().includes(".htm"),s=!t.endsWith("/");if(e&&s){let o=t+".html";fetch(o,{method:"HEAD",mode:"no-cors"}).then(function(i){i.status==200&&window.location.replace(o+n.search+n.hash)})}}function Xe(n,t){let e=t||ze.hosting.redirects;for(let s of e)try{if(s.regex){let o=Ot.compile(s.regex),i=o.matcher(n);if(i.matches()){let B=s.destination,r=o.namedGroups();if(Object.keys(r).length>0)for(let c in r)B=B.replaceAll(`:${c}`,i.group(c));let a=i.groupCount();if(a>0)for(let c=1;c<=a;c++)B=B.replaceAll(`:${c}`,i.group(c));return B}}if(s.source){if(S(n,s.source))return s.destination;let i=se(s.source).exec(n);if(i){let B=s.destination,r=ee(s.source);for(let a=0;a0&&(a.prefixRune=a.prefix.codePointAt(0)),a.namedGroups=o.namedGroups,a}static match(t,e){return n.compile(t).match(e)}constructor(t,e,s=0,o=0){this.expr=t,this.prog=e,this.numSubexp=s,this.longest=o,this.cond=e.startCond(),this.prefix=null,this.prefixUTF8=null,this.prefixComplete=!1,this.prefixRune=0,this.pooled=new qt,this.dfa=new mt(this.prog),this.onepass=Et.compile(this.prog),this.prefilter=null}matchPrefixComplete(t,e,s,o){if((s===m.ANCHOR_START||s===m.ANCHOR_BOTH)&&e!==0)return null;let i=-1,B=-1,r=t.prefixLength(this);if(s===m.UNANCHORED){let a=t.index(this,e);if(a<0)return null;i=e+a,B=i+r}else if(s===m.ANCHOR_BOTH){if(t.endPos()!==r||t.index(this,0)!==0)return null;i=0,B=r}else if(s===m.ANCHOR_START){if(t.index(this,0)!==0)return null;i=0,B=r}if(i<0)return null;if(o>0){let a=new Int32Array(o).fill(-1);return a[0]=i,a[1]=B,Array.from(a)}return[]}executeEngine(t,e,s,o){if(this.prefixComplete&&(o===0||this.numSubexp===0))return this.matchPrefixComplete(t,e,s,o);if(this.prefilter!==null&&s===m.UNANCHORED&&!this.prefilter.eval(t,e))return null;if(this.onepass!==null)return Et.execute(this,t,e,s,o);if(o>0)return this.prog.numLb===0&&t.endPos()<=it.maxBitStateLen(this.prog)?it.execute(this,t,e,s,o):this.doExecuteNFA(t,e,s,o);if(this.prog.numLb===0){let i=this.dfa.match(t,e,s);if(i!==null)return i?[]:null;if(t.endPos()<=it.maxBitStateLen(this.prog))return it.execute(this,t,e,s,o)}return this.doExecuteNFA(t,e,s,o)}numberOfCapturingGroups(){return this.numSubexp}numberOfInstructions(){return this.prog.numInst()}get(){let t;do t=this.pooled.get();while(t&&!this.pooled.compareAndSet(t,t.next));return t}reset(){this.pooled.set(null)}put(t,e){let s=this.pooled.get();do s=this.pooled.get(),!e&&s&&(t=Bt.fromMachine(t),e=!0),t.next!==s&&(t.next=s);while(!this.pooled.compareAndSet(s,t))}toString(){return this.expr}doExecuteNFA(t,e,s,o){let i=this.get(),B=!1;i?i.next!==null&&(i=Bt.fromMachine(i),B=!0):(i=Bt.fromRE2(this),B=!0),i.init(o);let r=i.match(t,e,s)?i.submatches():null;return this.put(i,B),r}match(t){return this.executeEngine(T.fromUTF16(t),0,m.UNANCHORED,0)!==null}matchWithGroup(t,e,s,o,i){return t instanceof W||(b.isByteArray(t)?t=$.utf8(t):t=$.utf16(t)),this.matchMachineInput(t,e,s,o,i)}matchMachineInput(t,e,s,o,i){if(e>s)return[!1,null];let B=t.isUTF16Encoding()?T.fromUTF16(t.asCharSequence(),0,s):T.fromUTF8(t.asBytes(),0,s),r=this.executeEngine(B,e,o,2*i);return r===null?[!1,null]:[!0,r]}matchUTF8(t){return this.executeEngine(T.fromUTF8(t),0,m.UNANCHORED,0)!==null}replaceAll(t,e){return this.replaceAllFunc(t,()=>e,2*t.length+1)}replaceFirst(t,e){return this.replaceAllFunc(t,()=>e,1)}replaceAllFunc(t,e,s){let o=0,i=0,B="",r=T.fromUTF16(t),a=0;for(;i<=t.length;){let c=this.executeEngine(r,i,m.UNANCHORED,2);if(c===null||c.length===0)break;B+=t.substring(o,c[0]),(c[1]>o||c[0]===0)&&(B+=e(t.substring(c[0],c[1])),a++),o=c[1];let d=r.step(i)&7;if(i+d>c[1]?i+=d:i+1>c[1]?i++:i=c[1],a>=s)break}return B+=t.substring(o),B}pad(t){if(t===null)return null;let e=(1+this.numSubexp)*2;if(t.lengtho){let o=[],i=t.endPos();e<0&&(e=i+1);let B=0,r=0,a=-1;for(;r=0&&(s[o]=t.slice(e[2*o],e[2*o+1]));return s}findUTF8SubmatchIndex(t){return this.pad(this.executeEngine(T.fromUTF8(t),0,m.UNANCHORED,this.prog.numCap))}findSubmatch(t){let e=this.executeEngine(T.fromUTF16(t),0,m.UNANCHORED,this.prog.numCap);if(e===null)return null;let s=new Array(1+this.numSubexp).fill(null);for(let o=0;o=0&&(s[o]=t.substring(e[2*o],e[2*o+1]));return s}findSubmatchIndex(t){return this.pad(this.executeEngine(T.fromUTF16(t),0,m.UNANCHORED,this.prog.numCap))}findAllUTF8(t,e){let s=this.allMatches(T.fromUTF8(t),e,o=>t.slice(o[0],o[1]));return s.length===0?null:s}findAllUTF8Index(t,e){let s=this.allMatches(T.fromUTF8(t),e,o=>o.slice(0,2));return s.length===0?null:s}findAll(t,e){let s=this.allMatches(T.fromUTF16(t),e,o=>t.substring(o[0],o[1]));return s.length===0?null:s}findAllIndex(t,e){let s=this.allMatches(T.fromUTF16(t),e,o=>o.slice(0,2));return s.length===0?null:s}findAllUTF8Submatch(t,e){let s=this.allMatches(T.fromUTF8(t),e,o=>{let i=new Array(o.length/2|0).fill(null);for(let B=0;B=0&&(i[B]=t.slice(o[2*B],o[2*B+1]));return i});return s.length===0?null:s}findAllUTF8SubmatchIndex(t,e){let s=this.allMatches(T.fromUTF8(t),e);return s.length===0?null:s}findAllSubmatch(t,e){let s=this.allMatches(T.fromUTF16(t),e,o=>{let i=new Array(o.length/2|0).fill(null);for(let B=0;B=0&&(i[B]=t.substring(o[2*B],o[2*B+1]));return i});return s.length===0?null:s}findAllSubmatchIndex(t,e){let s=this.allMatches(T.fromUTF16(t),e);return s.length===0?null:s}},be=class n{static UNANCHORED=m.UNANCHORED;static ANCHOR_START=m.ANCHOR_START;static ANCHOR_BOTH=m.ANCHOR_BOTH;constructor(t=n.UNANCHORED,e=0){this.anchor=t,this.jsFlags=e;let s=m.PERL;(e&q.DISABLE_UNICODE_GROUPS)!==0&&(s&=-129),(e&q.LOOKBEHINDS)!==0&&(s|=m.LOOKBEHIND),this.re2Flags=s,this.regexps=[],this.prog=null,this.dfa=null,this.dummyRe2=null}add(t){if(this.prog)throw new ht("Cannot add patterns after compile");let e=t;(this.jsFlags&q.CASE_INSENSITIVE)!==0&&(e=`(?i)${e}`),(this.jsFlags&q.DOTALL)!==0&&(e=`(?s)${e}`),(this.jsFlags&q.MULTILINE)!==0&&(e=`(?m)${e}`);let s=At.parse(e,this.re2Flags);return this.regexps.push(bt.simplify(s)),this.regexps.length-1}compile(){this.prog||(this.prog=wt.compileSet(this.regexps),this.dfa=new mt(this.prog),this.dummyRe2={prog:this.prog,cond:this.prog.startCond(),prefix:"",prefixRune:0,longest:!1})}match(t){this.prog||this.compile();let e=b.isByteArray(t)?T.fromUTF8(t):T.fromUTF16(t),s=m.UNANCHORED;this.anchor===n.ANCHOR_START?s=m.ANCHOR_START:this.anchor===n.ANCHOR_BOTH&&(s=m.ANCHOR_BOTH);let o=this.dfa.matchSet(e,0,s);if(o!==null)return o;let i=Bt.fromRE2(this.dummyRe2);return i.init(0),i.matchSet(e,0,s)}},Qt=class n{static isHexadecimal(t){return"0"<=t&&t<="9"||"A"<=t&&t<="F"||"a"<=t&&t<="f"}static translate(t){let e="";if(t instanceof RegExp&&(t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t=t.source),typeof t!="string")return t;let s="",o=!1,i=t.length;i===0&&(s="(?:)",o=!0);let B=!1,r=0;for(;r=65&&D<=90||D>=97&&D<=122){let y=D%32;s+="\\x",s+=(y>>4).toString(16).toUpperCase(),s+=(y&15).toString(16).toUpperCase(),r+=3,o=!0;continue}}s+="c",r+=2,o=!0;continue}case"u":{if(r+2=48&&h<=57||h>=65&&h<=90||h>=97&&h<=122){let y=b.charCount(h);s+=t.substring(r+1,r+1+y),r+=y+1,o=!0}else{s+="\\";let y=b.charCount(h);s+=t.substring(r+1,r+1+y),r+=y+1}continue}}}else if(c==="/"){s+="\\/",r+=1,o=!0;continue}else if(c==="[")B=!0;else if(c==="]")B=!1;else if(!B&&c==="("&&r+2)".includes(t[r+3])){s+="(?P<",r+=3,o=!0;continue}let d=t.codePointAt(r),p=b.charCount(d);s+=t.substring(r,r+p),r+=p}let a=o?s:t;return e.length>0?`(?${e})${a}`:a}},Ot=class n{static CASE_INSENSITIVE=q.CASE_INSENSITIVE;static DOTALL=q.DOTALL;static MULTILINE=q.MULTILINE;static DISABLE_UNICODE_GROUPS=q.DISABLE_UNICODE_GROUPS;static LONGEST_MATCH=q.LONGEST_MATCH;static LOOKBEHINDS=q.LOOKBEHINDS;static quote(t){return b.quoteMeta(t)}static quoteReplacement(t,e=!1){return Ct.quoteReplacement(t,e)}static translateRegExp(t){return Qt.translate(t)}static compile(t,e=0){let s=t;if((e&n.CASE_INSENSITIVE)!==0&&(s=`(?i)${s}`),(e&n.DOTALL)!==0&&(s=`(?s)${s}`),(e&n.MULTILINE)!==0&&(s=`(?m)${s}`),(e&~(n.MULTILINE|n.DOTALL|n.CASE_INSENSITIVE|n.DISABLE_UNICODE_GROUPS|n.LONGEST_MATCH|n.LOOKBEHINDS))!==0)throw new vt("Flags should only be a combination of MULTILINE, DOTALL, CASE_INSENSITIVE, DISABLE_UNICODE_GROUPS, LONGEST_MATCH, LOOKBEHINDS");let o=m.PERL;(e&n.DISABLE_UNICODE_GROUPS)!==0&&(o&=-129),(e&n.LOOKBEHINDS)!==0&&(o|=m.LOOKBEHIND);let i=new n(t,e);return i.re2Input=Yt.compileImpl(s,o,(e&n.LONGEST_MATCH)!==0),i}static matches(t,e){return n.compile(t).testExact(e)}static initTest(t,e,s){if(t==null)throw new Error("pattern is null");if(s==null)throw new Error("re2 is null");let o=new n(t,e);return o.re2Input=s,o}constructor(t,e){this.patternInput=t,this.flagsInput=e}reset(){this.re2Input.reset()}flags(){return this.flagsInput}pattern(){return this.patternInput}re2(){return this.re2Input}matches(t){return this.testExact(t)}matcher(t){return b.isByteArray(t)&&(t=$.utf8(t)),new Ct(this,t)}test(t){return b.isByteArray(t)?this.re2Input.matchUTF8(t):this.re2Input.match(t)}testExact(t){let e=b.isByteArray(t)?T.fromUTF8(t):T.fromUTF16(t);return this.re2Input.executeEngine(e,0,m.ANCHOR_BOTH,0)!==null}split(t,e=0){let s=this.matcher(t),o=[],i=0,B=0;for(;s.find();){if(B===0&&s.end()===0){B=s.end();continue}if(e>0&&o.length===e-1)break;if(B===s.start()){if(e===0){i+=1,B=s.end();continue}}else for(;i>0;)o.push(""),i-=1;o.push(s.substring(B,s.start())),B=s.end()}if(e===0&&B!==s.inputLength()){for(;i>0;)o.push(""),i-=1;o.push(s.substring(B,s.inputLength()))}return(e!==0||o.length===0)&&o.push(s.substring(B,s.inputLength())),o}toString(){return this.patternInput}programSize(){return this.re2Input.numberOfInstructions()}groupCount(){return this.re2Input.numberOfCapturingGroups()}namedGroups(){return this.re2Input.namedGroups}equals(t){return this===t?!0:t===null||this.constructor!==t.constructor?!1:this.flagsInput===t.flagsInput&&this.patternInput===t.patternInput}};var Xt=(n,t,e)=>{let s=n instanceof RegExp?Ge(n,e):n,o=t instanceof RegExp?Ge(t,e):t,i=s!==null&&o!=null&&ds(s,o,e);return i&&{start:i[0],end:i[1],pre:e.slice(0,i[0]),body:e.slice(i[0]+s.length,i[1]),post:e.slice(i[1]+o.length)}},Ge=(n,t)=>{let e=t.match(n);return e?e[0]:null},ds=(n,t,e)=>{let s,o,i,B,r,a=e.indexOf(n),c=e.indexOf(t,a+1),d=a;if(a>=0&&c>0){if(n===t)return[a,c];for(s=[],i=e.length;d>=0&&!r;){if(d===a)s.push(d),a=e.indexOf(n,d+1);else if(s.length===1){let p=s.pop();p!==void 0&&(r=[p,c])}else o=s.pop(),o!==void 0&&o=0?a:c}s.length&&B!==void 0&&(r=[i,B])}return r};var Le="\0SLASH"+Math.random()+"\0",Te="\0OPEN"+Math.random()+"\0",Vt="\0CLOSE"+Math.random()+"\0",Ne="\0COMMA"+Math.random()+"\0",xe="\0PERIOD"+Math.random()+"\0",ps=new RegExp(Le,"g"),gs=new RegExp(Te,"g"),hs=new RegExp(Vt,"g"),Cs=new RegExp(Ne,"g"),fs=new RegExp(xe,"g"),ms=/\\\\/g,Ds=/\\{/g,Es=/\\}/g,ys=/\\,/g,ws=/\\\./g,bs=1e5;function Wt(n){return isNaN(n)?n.charCodeAt(0):parseInt(n,10)}function As(n){return n.replace(ms,Le).replace(Ds,Te).replace(Es,Vt).replace(ys,Ne).replace(ws,xe)}function Os(n){return n.replace(ps,"\\").replace(gs,"{").replace(hs,"}").replace(Cs,",").replace(fs,".")}function He(n){if(!n)return[""];let t=[],e=Xt("{","}",n);if(!e)return n.split(",");let{pre:s,body:o,post:i}=e,B=s.split(",");B[B.length-1]+="{"+o+"}";let r=He(i);return i.length&&(B[B.length-1]+=r.shift(),B.push.apply(B,r)),t.push.apply(t,B),t}function ke(n,t={}){if(!n)return[];let{max:e=bs}=t;return n.slice(0,2)==="{}"&&(n="\\{\\}"+n.slice(2)),ct(As(n),e,!0).map(Os)}function Is(n){return"{"+n+"}"}function Fs(n){return/^-?0\d/.test(n)}function Gs(n,t){return n<=t}function Ls(n,t){return n>=t}function ct(n,t,e){let s=[],o=Xt("{","}",n);if(!o)return[n];let i=o.pre,B=o.post.length?ct(o.post,t,!1):[""];if(/\$$/.test(o.pre))for(let r=0;r=0;if(!c&&!d)return o.post.match(/,(?!,).*\}/)?(n=o.pre+"{"+o.body+Vt+o.post,ct(n,t,!0)):[n];let p;if(c)p=o.body.split(/\.\./);else if(p=He(o.body),p.length===1&&p[0]!==void 0&&(p=ct(p[0],t,!1).map(Is),p.length===1))return B.map(D=>o.pre+p[0]+D);let h;if(c&&p[0]!==void 0&&p[1]!==void 0){let D=Wt(p[0]),y=Wt(p[1]),E=Math.max(p[0].length,p[1].length),O=p.length===3&&p[2]!==void 0?Math.max(Math.abs(Wt(p[2])),1):1,A=Gs;y0){let z=new Array(j+1).join("0");L<0?H="-"+z+H.slice(1):H=z+H}}h.push(H)}}else{h=[];for(let D=0;D{if(typeof n!="string")throw new TypeError("invalid pattern");if(n.length>65536)throw new TypeError("pattern is too long")};var Ts={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},lt=n=>n.replace(/[[\]\\-]/g,"\\$&"),Ns=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Re=n=>n.join(""),Se=(n,t)=>{let e=t;if(n.charAt(e)!=="[")throw new Error("not in a brace expression");let s=[],o=[],i=e+1,B=!1,r=!1,a=!1,c=!1,d=e,p="";t:for(;ip?s.push(lt(p)+"-"+lt(E)):E===p&&s.push(lt(E)),p="",i++;continue}if(n.startsWith("-]",i+1)){s.push(lt(E+"-")),i+=2;continue}if(n.startsWith("-",i+1)){p=E,i+=2;continue}s.push(lt(E)),i++}if(de?t?n.replace(/\[([^/\\])\]/g,"$1"):n.replace(/((?!\\).|^)\[([^/\\])\]/g,"$1$2").replace(/\\([^/])/g,"$1"):t?n.replace(/\[([^/\\{}])\]/g,"$1"):n.replace(/((?!\\).|^)\[([^/\\{}])\]/g,"$1$2").replace(/\\([^/{}])/g,"$1");var P,xs=new Set(["!","?","+","*","@"]),Zt=n=>xs.has(n),ve=n=>Zt(n.type),Hs=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),ks=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),Rs=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),Me=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),Ss="(?!(?:^|/)\\.\\.?(?:$|/))",It="(?!\\.)",vs=new Set(["[","."]),Ms=new Set(["..","."]),Ps=new Set("().*{}+?[]^$\\!"),_s=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),$t="[^/]",Pe=$t+"*?",_e=$t+"+?",Js=0,et=class{type;#s;#o;#i=!1;#t=[];#e;#r;#c;#a=!1;#n;#B;#u=!1;id=++Js;get depth(){return(this.#e?.depth??-1)+1}[Symbol.for("nodejs.util.inspect.custom")](){return{"@@type":"AST",id:this.id,type:this.type,root:this.#s.id,parent:this.#e?.id,depth:this.depth,partsLength:this.#t.length,parts:this.#t}}constructor(t,e,s={}){this.type=t,t&&(this.#o=!0),this.#e=e,this.#s=this.#e?this.#e.#s:this,this.#n=this.#s===this?s:this.#s.#n,this.#c=this.#s===this?[]:this.#s.#c,t==="!"&&!this.#s.#a&&this.#c.push(this),this.#r=this.#e?this.#e.#t.length:0}get hasMagic(){if(this.#o!==void 0)return this.#o;for(let t of this.#t)if(typeof t!="string"&&(t.type||t.hasMagic))return this.#o=!0;return this.#o}toString(){return this.#B!==void 0?this.#B:this.type?this.#B=this.type+"("+this.#t.map(t=>String(t)).join("|")+")":this.#B=this.#t.map(t=>String(t)).join("")}#f(){if(this!==this.#s)throw new Error("should only call on root");if(this.#a)return this;this.toString(),this.#a=!0;let t;for(;t=this.#c.pop();){if(t.type!=="!")continue;let e=t,s=e.#e;for(;s;){for(let o=e.#r+1;!s.type&&otypeof e=="string"?e:e.toJSON()):[this.type,...this.#t.map(e=>e.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#s||this.#s.#a&&this.#e?.type==="!")&&t.push({}),t}isStart(){if(this.#s===this)return!0;if(!this.#e?.isStart())return!1;if(this.#r===0)return!0;let t=this.#e;for(let e=0;etypeof D!="string"),c=this.#t.map(D=>{let[y,E,O,A]=typeof D=="string"?P.#b(D,this.#o,a):D.toRegExpSource(t);return this.#o=this.#o||O,this.#i=this.#i||A,y}).join(""),d="";if(this.isStart()&&typeof this.#t[0]=="string"&&!(this.#t.length===1&&Ms.has(this.#t[0]))){let y=vs,E=e&&y.has(c.charAt(0))||c.startsWith("\\.")&&y.has(c.charAt(2))||c.startsWith("\\.\\.")&&y.has(c.charAt(4)),O=!e&&!t&&y.has(c.charAt(0));d=E?Ss:O?It:""}let p="";return this.isEnd()&&this.#s.#a&&this.#e?.type==="!"&&(p="(?:$|\\/)"),[d+c+p,V(c),this.#o=!!this.#o,this.#i]}let s=this.type==="*"||this.type==="+",o=this.type==="!"?"(?:(?!(?:":"(?:",i=this.#C(e);if(this.isStart()&&this.isEnd()&&!i&&this.type!=="!"){let a=this.toString(),c=this;return c.#t=[a],c.type=null,c.#o=void 0,[a,V(this.toString()),!1,!1]}let B=!s||t||e||!It?"":this.#C(!0);B===i&&(B=""),B&&(i=`(?:${i})(?:${B})*?`);let r="";if(this.type==="!"&&this.#u)r=(this.isStart()&&!e?It:"")+_e;else{let a=this.type==="!"?"))"+(this.isStart()&&!e&&!t?It:"")+Pe+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&B?")":this.type==="*"&&B?")?":`)${this.type}`;r=o+i+a}return[r,V(i),this.#o=!!this.#o,this.#i]}#p(){if(ve(this)){let t=0,e=!1;do{e=!0;for(let s=0;s{if(typeof e=="string")throw new Error("string type in extglob ast??");let[s,o,i,B]=e.toRegExpSource(t);return this.#i=this.#i||B,s}).filter(e=>!(this.isStart()&&this.isEnd())||!!e).join("|")}static#b(t,e,s=!1){let o=!1,i="",B=!1,r=!1;for(let a=0;ae?t?n.replace(/[?*()[\]{}]/g,"[$&]"):n.replace(/[?*()[\]\\{}]/g,"\\$&"):t?n.replace(/[?*()[\]]/g,"[$&]"):n.replace(/[?*()[\]\\]/g,"\\$&");var S=(n,t,e={})=>(ut(t),!e.nocomment&&t.charAt(0)==="#"?!1:new rt(t,e).match(n)),Us=/^\*+([^+@!?*[(]*)$/,Ks=n=>t=>!t.startsWith(".")&&t.endsWith(n),js=n=>t=>t.endsWith(n),qs=n=>(n=n.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(n)),Ys=n=>(n=n.toLowerCase(),t=>t.toLowerCase().endsWith(n)),Qs=/^\*+\.\*+$/,zs=n=>!n.startsWith(".")&&n.includes("."),Xs=n=>n!=="."&&n!==".."&&n.includes("."),Ws=/^\.\*+$/,Vs=n=>n!=="."&&n!==".."&&n.startsWith("."),Zs=/^\*+$/,$s=n=>n.length!==0&&!n.startsWith("."),to=n=>n.length!==0&&n!=="."&&n!=="..",eo=/^\?+([^+@!?*[(]*)?$/,so=([n,t=""])=>{let e=Ke([n]);return t?(t=t.toLowerCase(),s=>e(s)&&s.toLowerCase().endsWith(t)):e},oo=([n,t=""])=>{let e=je([n]);return t?(t=t.toLowerCase(),s=>e(s)&&s.toLowerCase().endsWith(t)):e},io=([n,t=""])=>{let e=je([n]);return t?s=>e(s)&&s.endsWith(t):e},no=([n,t=""])=>{let e=Ke([n]);return t?s=>e(s)&&s.endsWith(t):e},Ke=([n])=>{let t=n.length;return e=>e.length===t&&!e.startsWith(".")},je=([n])=>{let t=n.length;return e=>e.length===t&&e!=="."&&e!==".."},qe=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",Je={win32:{sep:"\\"},posix:{sep:"/"}},Bo=qe==="win32"?Je.win32.sep:Je.posix.sep;S.sep=Bo;var M=Symbol("globstar **");S.GLOBSTAR=M;var ro="[^/]",ao=ro+"*?",co="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",uo="(?:(?!(?:\\/|^)\\.).)*?",lo=(n,t={})=>e=>S(e,n,t);S.filter=lo;var K=(n,t={})=>Object.assign({},n,t),po=n=>{if(!n||typeof n!="object"||!Object.keys(n).length)return S;let t=S;return Object.assign((s,o,i={})=>t(s,o,K(n,i)),{Minimatch:class extends t.Minimatch{constructor(o,i={}){super(o,K(n,i))}static defaults(o){return t.defaults(K(n,o)).Minimatch}},AST:class extends t.AST{constructor(o,i,B={}){super(o,i,K(n,B))}static fromGlob(o,i={}){return t.AST.fromGlob(o,K(n,i))}},unescape:(s,o={})=>t.unescape(s,K(n,o)),escape:(s,o={})=>t.escape(s,K(n,o)),filter:(s,o={})=>t.filter(s,K(n,o)),defaults:s=>t.defaults(K(n,s)),makeRe:(s,o={})=>t.makeRe(s,K(n,o)),braceExpand:(s,o={})=>t.braceExpand(s,K(n,o)),match:(s,o,i={})=>t.match(s,o,K(n,i)),sep:t.sep,GLOBSTAR:M})};S.defaults=po;var Ye=(n,t={})=>(ut(n),t.nobrace||!/\{(?:(?!\{).)*\}/.test(n)?[n]:ke(n,{max:t.braceExpandMax}));S.braceExpand=Ye;var go=(n,t={})=>new rt(n,t).makeRe();S.makeRe=go;var ho=(n,t,e={})=>{let s=new rt(t,e);return n=n.filter(o=>s.match(o)),s.options.nonull&&!n.length&&n.push(t),n};S.match=ho;var Ue=/[?*]|[+@!]\(.*?\)|\[|\]/,Co=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),rt=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(t,e={}){ut(t),e=e||{},this.options=e,this.maxGlobstarRecursion=e.maxGlobstarRecursion??200,this.pattern=t,this.platform=e.platform||qe,this.isWindows=this.platform==="win32";let s="allowWindowsEscape";this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||e[s]===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=e.windowsNoMagicRoot!==void 0?e.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let e of t)if(typeof e!="string")return!0;return!1}debug(...t){}make(){let t=this.pattern,e=this.options;if(!e.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...i)=>console.error(...i)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(i=>this.slashSplit(i));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let o=this.globParts.map((i,B,r)=>{if(this.isWindows&&this.windowsNoMagicRoot){let a=i[0]===""&&i[1]===""&&(i[2]==="?"||!Ue.test(i[2]))&&!Ue.test(i[3]),c=/^[a-z]:/i.test(i[0]);if(a)return[...i.slice(0,4),...i.slice(4).map(d=>this.parse(d))];if(c)return[i[0],...i.slice(1).map(d=>this.parse(d))]}return i.map(a=>this.parse(a))});if(this.debug(this.pattern,o),this.set=o.filter(i=>i.indexOf(!1)===-1),this.isWindows)for(let i=0;i=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):e>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(e=>{let s=-1;for(;(s=e.indexOf("**",s+1))!==-1;){let o=s;for(;e[o+1]==="**";)o++;o!==s&&e.splice(s,o-s)}return e})}levelOneOptimize(t){return t.map(e=>(e=e.reduce((s,o)=>{let i=s[s.length-1];return o==="**"&&i==="**"?s:o===".."&&i&&i!==".."&&i!=="."&&i!=="**"?(s.pop(),s):(s.push(o),s)},[]),e.length===0?[""]:e))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let o=1;oo&&s.splice(o+1,B-o);let r=s[o+1],a=s[o+2],c=s[o+3];if(r!==".."||!a||a==="."||a===".."||!c||c==="."||c==="..")continue;e=!0,s.splice(o,1);let d=s.slice(0);d[o]="**",t.push(d),o--}if(!this.preserveMultipleSlashes){for(let B=1;Be.length)}partsMatch(t,e,s=!1){let o=0,i=0,B=[],r="";for(;o=2&&(t=this.levelTwoFileOptimize(t)),e.includes(M)?this.#s(t,e,s,o,i):this.#i(t,e,s,o,i)}#s(t,e,s,o,i){let B=e.indexOf(M,i),r=e.lastIndexOf(M),[a,c,d]=s?[e.slice(i,B),e.slice(B+1),[]]:[e.slice(i,B),e.slice(B+1,r),e.slice(r+1)];if(a.length){let G=t.slice(o,o+a.length);if(!this.#i(G,a,s,0,0))return!1;o+=a.length,i+=a.length}let p=0;if(d.length){if(d.length+o>t.length)return!1;let G=t.length-d.length;if(this.#i(t,d,s,G,0))p=d.length;else{if(t[t.length-1]!==""||o+d.length===t.length||(G--,!this.#i(t,d,s,G,0)))return!1;p=d.length+1}}if(!c.length){let G=!!p;for(let N=o;N{let c=a.map(p=>{if(p instanceof RegExp)for(let h of p.flags.split(""))o.add(h);return typeof p=="string"?Co(p):p===M?M:p._src});c.forEach((p,h)=>{let D=c[h+1],y=c[h-1];p!==M||y===M||(y===void 0?D!==void 0&&D!==M?c[h+1]="(?:\\/|"+s+"\\/)?"+D:c[h]=s:D===void 0?c[h-1]=y+"(?:\\/|\\/"+s+")?":D!==M&&(c[h-1]=y+"(?:\\/|\\/"+s+"\\/)"+D,c[h+1]=M))});let d=c.filter(p=>p!==M);if(this.partial&&d.length>=1){let p=[];for(let h=1;h<=d.length;h++)p.push(d.slice(0,h).join("/"));return"(?:"+p.join("|")+")"}return d.join("/")}).join("|"),[B,r]=t.length>1?["(?:",")"]:["",""];i="^"+B+i+r+"$",this.partial&&(i="^(?:\\/|"+B+i.slice(1,-1)+r+")$"),this.negate&&(i="^(?!"+i+").+$");try{this.regexp=new RegExp(i,[...o].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return t==="";if(t==="/"&&e)return!0;let s=this.options;this.isWindows&&(t=t.split("\\").join("/"));let o=this.slashSplit(t);this.debug(this.pattern,"split",o);let i=this.set;this.debug(this.pattern,"set",i);let B=o[o.length-1];if(!B)for(let r=o.length-2;!B&&r>=0;r--)B=o[r];for(let r of i){let a=o;if(s.matchBase&&r.length===1&&(a=[B]),this.matchOne(a,r,e))return s.flipNegate?!0:!this.negate}return s.flipNegate?!1:this.negate}static defaults(t){return S.defaults(t).Minimatch}};S.AST=et;S.Minimatch=rt;S.escape=te;S.unescape=V;function fo(n){for(var t=[],e=0;e=48&&B<=57||B>=65&&B<=90||B>=97&&B<=122||B===95){o+=n[i++];continue}break}if(!o)throw new TypeError("Missing parameter name at ".concat(e));t.push({type:"NAME",index:e,value:o}),e=i;continue}if(s==="("){var r=1,a="",i=e+1;if(n[i]==="?")throw new TypeError('Pattern cannot start with "?" at '.concat(i));for(;i-1)return!0}return!1},E=function(_){var k=r[r.length-1],Y=_||(k&&typeof k=="string"?k:"");if(k&&!Y)throw new TypeError('Must have text between two parameters, missing text after "'.concat(k.name,'"'));return!Y||y(Y)?"[^".concat(Z(B),"]+?"):"(?:(?!".concat(Z(Y),")[^").concat(Z(B),"])+?")};c)?(?!\?)/g,s=0,o=e.exec(n.source);o;)t.push({name:o[1]||s++,prefix:"",suffix:"",modifier:"",pattern:""}),o=e.exec(n.source);return n}function Do(n,t,e){var s=n.map(function(o){return se(o,t,e).source});return new RegExp("(?:".concat(s.join("|"),")"),Qe(e))}function Eo(n,t,e){return yo(ee(n,e),t,e)}function yo(n,t,e){e===void 0&&(e={});for(var s=e.strict,o=s===void 0?!1:s,i=e.start,B=i===void 0?!0:i,r=e.end,a=r===void 0?!0:r,c=e.encode,d=c===void 0?function(k){return k}:c,p=e.delimiter,h=p===void 0?"/#?":p,D=e.endsWith,y=D===void 0?"":D,E="[".concat(Z(y),"]|$"),O="[".concat(Z(h),"]"),A=B?"^":"",G=0,N=n;G-1:st===void 0;o||(A+="(?:".concat(O,"(?=").concat(E,"))?")),_||(A+="(?=".concat(O,"|").concat(E,")"))}return new RegExp(A,Qe(e))}function se(n,t,e){return n instanceof RegExp?mo(n,t):Array.isArray(n)?Do(n,t,e):Eo(n,t,e)}var wo={hosting:{public:"_site",cleanUrls:!0,trailingSlash:!1,ignore:["firebase.json","**/.*","tool","src","**/node_modules/**"],rewrites:[],redirects:[{regex:"^/(flutter(/.*)?)",destination:"https://api.flutter-io.cn/:1",type:301},{regex:"^/(objcdoc(/.*)?)",destination:"https://api.flutter-io.cn/:1",type:301},{regex:"^/(javadoc(/.*)?)",destination:"https://api.flutter-io.cn/:1",type:301},{regex:"(.*)\\.html$",destination:":1",type:301},{regex:"(.*)\\.$",destination:":1",type:301},{source:"/ads",destination:"https://flutter.cn/monetization",type:301},{source:"/community",destination:"https://flutter.cn/community",type:301},{source:"/gallery",destination:"https://github.com/flutter/gallery#flutter-gallery",type:301},{source:"/showcase",destination:"https://flutter.cn/showcase",type:301},{source:"/support",destination:"https://flutter.cn/community",type:301},{source:"/docs/:rest*",destination:"/:rest*",type:301},{source:"/subscribe/**",destination:"https://flutter.cn#newsletter",type:301},{source:"/accessibility",destination:"/ui/accessibility",type:301},{source:"/adaptations",destination:"/platform-integration/platform-adaptations",type:301},{source:"/adaptive*",destination:"/ui/adaptive-responsive",type:301},{source:"/ai-best-practices",destination:"/ai/best-practices",type:301},{source:"/ai-best-practices/:rest*",destination:"/ai/best-practices/:rest*",type:301},{source:"/ai-toolkit",destination:"/ai/ai-toolkit",type:301},{source:"/ai-toolkit/:rest*",destination:"/ai/ai-toolkit/:rest*",type:301},{source:"/ai/flutter-ext-for-gemini",destination:"/ai/gemini-cli-extension",type:301},{source:"/ai/best-practices/tool-calls-aka-function-calls",destination:"/ai/best-practices/tool-calls",type:301},{source:"/ai/antigravity",destination:"/ai/coding-assistants",type:301},{source:"/ai/gemini-code-assist",destination:"/ai/coding-assistants",type:301},{source:"/ai/firebase-ai-logic",destination:"https://firebase.google.cn/docs/ai-logic/get-started?platform=flutter",type:301},{source:"/android-release",destination:"/deployment/android",type:301},{source:"/animations",destination:"/ui/animations",type:301},{source:"/animations/:rest*",destination:"/ui/animations/:rest*",type:301},{source:"/assets-and-images",destination:"/ui/assets/assets-and-images",type:301},{source:"/bootstrap-into-dart",destination:"https://dart.cn/learn",type:301},{source:"/bug-reports",destination:"/resources/bug-reports",type:301},{source:"/cd",destination:"/deployment/cd",type:301},{source:"/code-of-conduct",destination:"https://github.com/flutter/flutter/blob/main/CODE_OF_CONDUCT.md",type:301},{source:"/custom-fonts",destination:"/cookbook/design/fonts",type:301},{source:"/data-and-backend/json",destination:"/data-and-backend/serialization/json",type:301},{source:"/debugging",destination:"/testing/debugging",type:301},{source:"/deferred-components",destination:"/perf/deferred-components",type:301},{source:"/desktop",destination:"/platform-integration/desktop",type:301},{source:"/desktop/windows",destination:"/platform-integration/windows/building",type:301},{source:"/desktop/macos",destination:"/platform-integration/macos/building",type:301},{source:"/desktop/linux",destination:"/platform-integration/linux/building",type:301},{source:"/perf/rendering/*",destination:"/perf",type:301},{source:"/perf/shader",destination:"/perf/rendering-performance",type:301},{source:"/developing-packages",destination:"/packages-and-plugins/developing-packages",type:301},{source:"/development",destination:"/",type:301},{source:"/development/:rest*",destination:"/:rest*",type:301},{source:"/devtools/:rest*",destination:"/tools/devtools/:rest*",type:301},{source:"/download",destination:"/install",type:301},{source:"/downloads/:resource*",destination:"/resources/:resource*",type:301},{source:"/f/dart-devtools-survey-metadata.json",destination:"https://storage.googleapis.com/flutter-uxr/surveys/devtools-survey-metadata.json",type:301},{source:"/f/flutter-survey-metadata.json",destination:"https://storage.googleapis.com/flutter-uxr/surveys/flutter-survey-metadata.json",type:301},{source:"/faq",destination:"/resources/faq",type:301},{source:"/fastlane-cd",destination:"/deployment/cd#fastlane",type:301},{source:"/flutter-for-:platform*",destination:"/flutter-for/:platform*-devs",type:301},{source:"/formatting",destination:"/tools/formatting",type:301},{source:"/gestures",destination:"/ui/advanced/gestures",type:301},{source:"/glossary",destination:"/resources/glossary",type:301},{source:"/glossary/:entry",destination:"/resources/glossary#:entry",type:301},{source:"/hot-reload",destination:"/tools/hot-reload",type:301},{source:"/ide-setup",destination:"/tools/editors",type:301},{source:"/images/catalog-widget-placeholder.png",destination:"/assets/images/docs/catalog-widget-placeholder.png",type:301},{source:"/inspector",destination:"/tools/devtools/inspector",type:301},{source:"/intellij-ide",destination:"/tools/android-studio",type:301},{source:"/intellij-setup",destination:"/tools/android-studio#setup",type:301},{source:"/ios-release",destination:"/deployment/ios",type:301},{source:"/json",destination:"/data-and-backend/serialization/json",type:301},{source:"/learn/tutorial",destination:"/learn/pathway/tutorial",type:301},{source:"/learn/tutorial/:rest*",destination:"/learn/pathway/tutorial/:rest*",type:301},{source:"/ui/media",destination:"/ui/assets",type:301},{source:"/ui/media/:rest*",destination:"/ui/assets/:rest*",type:301},{source:"/networking",destination:"/data-and-backend/networking",type:301},{source:"/overview",destination:"/resources/architectural-overview",type:301},{source:"/platform-channels",destination:"/platform-integration/platform-channels",type:301},{source:"/packages-and-plugins/happy-paths",destination:"/packages-and-plugins/favorites",type:301},{source:"/packages-and-plugins/happy-paths/recommended",destination:"/packages-and-plugins/favorites",type:301},{source:"/platform-plugins*",destination:"/packages-and-plugins/using-packages",type:301},{source:"/platform-services",destination:"/platform-integration/platform-channels",type:301},{source:"/predictive-back",destination:"/release/breaking-changes/android-predictive-back#migration-guide",type:301},{source:"/reading-writing-files",destination:"/cookbook/persistence/reading-writing-files",type:301},{source:"/reference/tutorials",destination:"/reference/learning-resources",type:301},{source:"/release-notes",destination:"/release/release-notes",type:301},{source:"/release-notes/:version*",destination:"/release/release-notes/release-notes-:version*",type:301},{source:"/responsive*",destination:"/ui/layout/responsive/adaptive-responsive",type:301},{source:"/routing-and-navigation",destination:"/ui/navigation",type:301},{source:"/sdk-archive",destination:"/install/archive",type:301},{source:"/setup-:os*",destination:"/install",type:301},{source:"/setup",destination:"/install",type:301},{source:"/technical-overview",destination:"/resources/architectural-overview",type:301},{source:"/text-input",destination:"/cookbook/forms/text-input",type:301},{source:"/tutorial",destination:"/learn/pathway/tutorial",type:301},{source:"/tutorials",destination:"/reference/learning-resources",type:301},{source:"/unbounded-constraints",destination:"/ui/layout/constraints#unbounded",type:301},{source:"/ui-performance",destination:"/perf/ui-performance",type:301},{source:"/ui/widgets-intro",destination:"/ui",type:301},{source:"/upgrading",destination:"/install/upgrade",type:301},{source:"/using-ide-vscode",destination:"/tools/vs-code",type:301},{source:"/using-ide",destination:"/tools/android-studio",type:301},{source:"/using-packages",destination:"/packages-and-plugins/using-packages",type:301},{source:"/web-analogs",destination:"/flutter-for/web-devs",type:301},{source:"/webflutter.dev/web",destination:"/web",type:301},{source:"/widgets-intro",destination:"/ui",type:301},{source:"/widgets",destination:"/ui/widgets/catalog",type:301},{source:"/widgets/:rest*",destination:"/ui/widgets/:rest*",type:301},{source:"/accessibility-and-localization",destination:"/ui/accessibility",type:301},{source:"/accessibility-and-localization/internationalization",destination:"/ui/internationalization",type:301},{source:"/accessibility-and-localization/:rest*",destination:"/ui/accessibility",type:301},{source:"/add-to-app/android/add-splash-screen",destination:"/platform-integration/android/splash-screen",type:301},{source:"/codelabs",destination:"/reference/learning-resources",type:301},{source:"/codelabs/layout-basics",destination:"/ui/layout",type:301},{source:"/codelabs/explicit-animations",destination:"/ui/animations/tutorial",type:301},{source:"/codelabs/implicit-animations",destination:"https://codelabs.developers.google.cn/advanced-flutter-animations",type:301},{source:"/cookbook",destination:"/reference/learning-resources",type:301},{source:"/cookbook/games/google-mobile-ads",destination:"/cookbook/plugins/google-mobile-ads",type:301},{source:"/cookbook/images/cached-images",destination:"/cookbook/images/network-image",type:301},{source:"/cookbook/effects/gradient-bubbles",destination:"/reference/learning-resources",type:301},{source:"/cookbook/effects/photo-filter-carousel",destination:"/reference/learning-resources",type:301},{source:"/cookbook/effects/typing-indicator",destination:"/reference/learning-resources",type:301},{source:"/cookbook/networking/named-routes",destination:"/cookbook/navigation/named-routes",type:301},{source:"/cookbook/testing/integration-test-introduction",destination:"/cookbook/testing/integration",type:301},{source:"/cookbook/testing/integration-test-profiling",destination:"/cookbook/testing/integration/profiling",type:301},{source:"/cookbook/testing/integration-test-scrolling",destination:"/cookbook/testing/integration/scrolling",type:301},{source:"/cookbook/testing/mocking",destination:"/cookbook/testing/unit/mocking",type:301},{source:"/cookbook/testing/unit-test",destination:"/cookbook/testing/unit/introduction",type:301},{source:"/cookbook/testing/widget-test-finders",destination:"/cookbook/testing/widget/finders",type:301},{source:"/cookbook/testing/widget-test-introduction",destination:"/cookbook/testing/widget",type:301},{source:"/cookbook/testing/widget-test-tap-drag",destination:"/cookbook/testing/widget/tap-drag",type:301},{source:"/deployment/fastlane-cd",destination:"/deployment/cd#fastlane",type:301},{source:"/get-started",destination:"/install",type:301},{source:"/get-started/custom",destination:"/install/custom",type:301},{source:"/get-started/codelab",destination:"/learn/pathway",type:301},{source:"/get-started/codelab-web",destination:"/learn",type:301},{source:"/get-started/editor",destination:"/tools/editors",type:301},{source:"/get-started/flutter-for",destination:"/learn",type:301},{source:"/get-started/flutter-for/ios-devs",destination:"/flutter-for/swiftui-devs",type:301},{source:"/get-started/flutter-for/:rest*",destination:"/flutter-for/:rest*",type:301},{source:"/get-started/fwe/*",destination:"/learn/pathway",type:301},{source:"/get-started/fundamentals",destination:"/learn/pathway",type:301},{source:"/get-started/fundamentals/*",destination:"/learn/pathway",type:301},{source:"/get-started/install",destination:"/install",type:301},{source:"/get-started/install/help",destination:"/install/troubleshoot",type:301},{source:"/get-started/install/*",destination:"/install",type:301},{source:"/get-started/learn-flutter",destination:"/learn",type:301},{source:"/get-started/learn-more",destination:"/learn",type:301},{source:"/get-started/test-drive*",destination:"/learn/pathway",type:301},{source:"/get-started/uninstall",destination:"/install/uninstall",type:301},{source:"/get-started/web",destination:"/platform-integration/web/building",type:301},{source:"/get-started/quick",destination:"/install/quick",type:301},{source:"/ios-14",destination:"/platform-integration/ios/ios-debugging",type:301},{source:"/ios-project-migration",destination:"https://web.archive.org/web/20220614103526/https://docs.flutter.dev/development/ios-project-migration",type:301},{source:"/layout",destination:"/ui/layout",type:301},{source:"/learn/learning-resources",destination:"/reference/learning-resources",type:301},{source:"/material-3-migration",destination:"/release/breaking-changes/material-3-migration",type:301},{source:"/packages-and-plugins/androidx-compatibility",destination:"/platform-integration/android/androidx-migration",type:301},{source:"/packages-and-plugins/c-interop",destination:"/platform-integration/android/c-interop",type:301},{source:"/packages-and-plugins/plugins-in-tests",destination:"/testing/plugins-in-tests",type:301},{source:"/packages-and-plugins/plugin-api-migration",destination:"/release/breaking-changes/plugin-api-migration",type:301},{source:"/platform-integration/android/androidx-migration",destination:"/release/breaking-changes/androidx-migration",type:301},{source:"/platform-integration/android/install-android",destination:"/platform-integration/android/setup",type:301},{source:"/platform-integration/android/install-android/:rest*",destination:"/platform-integration/android/setup",type:301},{source:"/platform-integration/android/splash-screen-migration",destination:"/release/breaking-changes/splash-screen-migration",type:301},{source:"/platform-integration/c-interop",destination:"/platform-integration",type:301},{source:"/platform-integration/ios-app-clip",destination:"/platform-integration/ios/ios-app-clip",type:301},{source:"/platform-integration/ios/install-ios",destination:"/platform-integration/ios/setup",type:301},{source:"/platform-integration/ios/install-ios/:rest*",destination:"/platform-integration/ios/setup",type:301},{source:"/platform-integration/ios/splash-screen",destination:"/platform-integration/ios/launch-screen",type:301},{source:"/platform-integration/linux/install-linux",destination:"/platform-integration/linux/setup",type:301},{source:"/platform-integration/linux/install-linux/:rest*",destination:"/platform-integration/linux/setup",type:301},{source:"/platform-integration/macos/install-macos",destination:"/platform-integration/macos/setup",type:301},{source:"/platform-integration/macos/install-macos/:rest*",destination:"/platform-integration/macos/setup",type:301},{source:"/platform-integration/platform-adaptations",destination:"/ui/adaptive-responsive/platform-adaptations",type:301},{source:"/platform-integration/platform-views",destination:"/platform-integration/android/platform-views",type:301},{source:"/platform-integration/web-images",destination:"/platform-integration/web/web-images",type:301},{source:"/platform-integration/web/initialization-legacy",destination:"/platform-integration/web/initialization",type:301},{source:"/platform-integration/web/install-web",destination:"/platform-integration/web/setup",type:301},{source:"/platform-integration/web/bootstrapping",destination:"/platform-integration/web/initialization",type:301},{source:"/platform-integration/windows/install-windows",destination:"/platform-integration/windows/setup",type:301},{source:"/platform-integration/windows/install-windows/:rest*",destination:"/platform-integration/windows/setup",type:301},{source:"/platform-integration/windows/run-loop-migration",destination:"/release/breaking-changes/windows-run-loop",type:301},{source:"/platform-integration/windows/version-migration",destination:"/release/breaking-changes/windows-version-information",type:301},{source:"/platform-integration/windows/dark-mode-migration",destination:"/release/breaking-changes/windows-dark-mode",type:301},{source:"/reference/widgets/:catalogpage+",destination:"/ui/widgets/:catalogpage+",type:301},{source:"/reference/widgets/widgetindex",destination:"/reference/widgets",type:301},{source:"/release/release-notes/changelogs/changelog-1.17.0",destination:"/release/release-notes/release-notes-1.17.0",type:301},{source:"/release/release-notes/supported-platforms",destination:"/reference/supported-platforms",type:301},{source:"/release/breaking-changes/can-request-focus",destination:"https://github.com/flutter/flutter/issues/149067",type:301},{source:"/release/breaking-changes/scrollable_alert_dialog",destination:"/release/breaking-changes/scrollable-alert-dialog",type:301},{source:"/release/breaking-changes/win_lifecycle_process_function",destination:"/release/breaking-changes/win-lifecycle-process-function",type:301},{source:"/release/archive",destination:"/install/archive",type:301},{source:"/release/upgrade",destination:"/install/upgrade",type:301},{source:"/resources/ai-overview",destination:"/ai/create-with-ai",type:301},{source:"/resources/books",destination:"/reference/learning-resources",type:301},{source:"/resources/bootstrap-into-dart",destination:"https://dart.cn/learn",type:301},{source:"/resources/compatibility",destination:"/release/compatibility-policy",type:301},{source:"/resources/dart-swift-concurrency",destination:"/flutter-for/dart-swift-concurrency",type:301},{source:"/resources/platform-adaptations",destination:"/platform-integration/platform-adaptations",type:301},{source:"/resources/rendering",destination:"/resources/architectural-overview#rendering-and-layout",type:301},{source:"/resources/security-false-positives",destination:"/reference/security-false-positives",type:301},{source:"/resources/technical-overview",destination:"/resources/architectural-overview",type:301},{source:"/resources/design-docs",destination:"https://github.com/flutter/flutter/issues?q=is%3Aissue%20label%3A%22design%20doc%22",type:301},{source:"/resources/Flutter-IntelliJ-cheat-sheet-MacOS.pdf",destination:"/tools/android-studio",type:301},{source:"/resources/Flutter-IntelliJ-cheat-sheet-WindowsLinux.pdf",destination:"/tools/android-studio",type:301},{source:"/testing/best-practices",destination:"/perf/best-practices",type:301},{source:"/testing/integration-tests/migration",destination:"/release/breaking-changes/flutter-driver-migration",type:301},{source:"/testing/ui-performance",destination:"/perf/ui-performance",type:301},{source:"/tools/devtools/code-size",destination:"/tools/devtools/app-size",type:301},{source:"/tools/devtools/codeSize",destination:"/tools/devtools/app-size",type:301},{source:"/tools/devtools/overview",destination:"/tools/devtools",type:301},{source:"/tools/devtools/timeline",destination:"/tools/devtools/performance",type:301},{source:"/tools/ide",destination:"/tools/vs-code",type:301},{source:"/tools/ide/android-studio",destination:"/tools/android-studio",type:301},{source:"/tools/ide/vs-code",destination:"/tools/vs-code",type:301},{source:"/tools/inspector",destination:"/tools/devtools/inspector",type:301},{source:"/tools/sdk/archive",destination:"/install/archive",type:301},{source:"/tools/sdk/overview",destination:"/tools/sdk",type:301},{source:"/tools/sdk/releases",destination:"/install/archive",type:301},{source:"/tools/sdk/release-notes",destination:"/release/release-notes",type:301},{source:"/tools/sdk/release-notes/:rest*",destination:"/release/release-notes/:rest*",type:301},{source:"/tools/sdk/release-notes/supported-platforms",destination:"/reference/supported-platforms",type:301},{source:"/tools/sdk/upgrading",destination:"/install/upgrade",type:301},{source:"/tools/web-renderers",destination:"/platform-integration/web/renderers",type:301},{source:"/tutorials/animation",destination:"/ui/animations/tutorial",type:301},{source:"/tutorials/interactive",destination:"/ui/interactive",type:301},{source:"/tutorials/internationalization",destination:"/ui/internationalization",type:301},{source:"/tutorials/layout",destination:"/ui/layout",type:301},{source:"/ui/accessibility-and-internationalization",destination:"/ui/accessibility",type:301},{source:"/ui/accessibility-and-internationalization/accessibility",destination:"/ui/accessibility",type:301},{source:"/ui/accessibility-and-internationalization/internationalization",destination:"/ui/internationalization",type:301},{source:"/ui/accessibility-and-localization",destination:"/ui/accessibility",type:301},{source:"/ui/accessibility-and-localization/:rest*",destination:"/ui/accessibility",type:301},{source:"/ui/advanced",destination:"/ui",type:301},{source:"/ui/advanced/actions_and_shortcuts",destination:"/ui/interactivity/actions-and-shortcuts",type:301},{source:"/ui/advanced/actions-and-shortcuts",destination:"/ui/interactivity/actions-and-shortcuts",type:301},{source:"/ui/advanced/focus",destination:"/ui/interactivity/focus",type:301},{source:"/ui/advanced/gestures",destination:"/ui/interactivity/gestures",type:301},{source:"/ui/advanced/shaders",destination:"/ui/design/graphics/fragment-shaders",type:301},{source:"/ui/advanced/slivers",destination:"/ui/layout/scrolling/slivers",type:301},{source:"/ui/advanced/splash-screen",destination:"/platform-integration/android/splash-screen",type:301},{source:"/ui/advanced/typography",destination:"/ui/design/text/typography",type:301},{source:"/ui/assets-and-images",destination:"/ui/assets/assets-and-images",type:301},{source:"/ui/building-adaptive-apps",destination:"/ui/adaptive-responsive",type:301},{source:"/ui/interactive",destination:"/ui/interactivity",type:301},{source:"/ui/internationalization/internationalization",destination:"/ui/internationalization",type:301},{source:"/ui/layout/adaptive-responsive",destination:"/ui/adaptive-responsive",type:301},{source:"/ui/layout/box-constraints",destination:"/ui/layout/constraints#unbounded",type:301},{source:"/ui/layout/building-adaptive-apps",destination:"/ui/adaptive-responsive",type:301},{source:"/ui/layout/responsive",destination:"/ui/adaptive-responsive",type:301},{source:"/ui/layout/responsive/adaptive-responsive",destination:"/ui/adaptive-responsive",type:301},{source:"/ui/material",destination:"/ui/design/material",type:301},{source:"/ui/material3-updates",destination:"/ui/design/material",type:301},{source:"/ui/scrolling",destination:"/ui/layout/scrolling",type:301},{source:"/ui/scrolling/:rest*",destination:"/ui/layout/scrolling/:rest*",type:301},{source:"/ui/splash-screen",destination:"/platform-integration/android/splash-screen",type:301},{source:"/ui/splash-screen/android-splash-screen",destination:"/platform-integration/android/splash-screen",type:301},{source:"/ui/widgets/catalog",destination:"/ui/widgets",type:301},{source:"/ui/widgets/widgetindex",destination:"/reference/widgets",type:301},{source:"/web",destination:"/platform-integration/web",type:301},{source:"/whats-new-archive",destination:"/release/whats-new",type:301},{source:"/whats-new",destination:"/release/whats-new",type:301},{source:"/testing/oem-debuggers",destination:"/testing/native-debugging",type:301},{source:"/adoptawidget",destination:"https://github.com/flutter/flutter/blob/main/CONTRIBUTING.md",type:301},{source:"/apprentice-giveaway",destination:"https://www.youtube.com/playlist?list=PL4dBIh1xps-HAaadBRWQobCO_IJ4gMOG2",type:301},{source:"/clock",destination:"https://blog.flutter.dev/its-time-the-flutter-clock-contest-results-dcebe2eb3957",type:301},{source:"/create",destination:"https://blog.flutter.dev/the-flutter-create-winners-are-40980f2d20b3",type:301},{source:"/assets/images/docs/intellij/hot-reload.gif",destination:"https://raw.githubusercontent.com/flutter/website/main/src/assets/images/docs/tools/android-studio/hot-reload.gif",type:301},{source:"/brick-breaker",destination:"https://codelabs.developers.google.cn/codelabs/flutter-flame-brick-breaker",type:301},{source:"/catalog/samples",destination:"https://flutter.github.io/samples/#",type:301},{source:"/catalog/samples/*",destination:"https://flutter.github.io/samples/#",type:301},{source:"/chat",destination:"https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md",type:302},{source:"/custom-deferred-components",destination:"https://github.com/flutter/flutter/wiki/Deferred-Components#custom-implementations",type:301},{source:"/deferred-components-wiki",destination:"https://github.com/flutter/flutter/wiki/Deferred-Components",type:301},{source:"/design-principles",destination:"https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md",type:301},{source:"/fully-deferred-flutter",destination:"https://github.com/flutter/flutter/wiki/Deferred-Components#fully-deferring-flutter-in-add-to-app",type:301},{source:"/null-safety",destination:"https://dart.cn/null-safety",type:301},{source:"/privacy",destination:"https://www.google.com/intl/en/policies/privacy",type:301},{source:"/report-jank",destination:"https://github.com/flutter/flutter/issues/74833",type:301},{source:"/research-optout",destination:"https://docs.google.com/forms/d/e/1FAIpQLSeG2Nhj0YQkr3m75P74Zb9G-v7zgNhAE9arCyig-a5B1A8uDw/viewform?usp=sf_link",type:301},{source:"/research-signup",destination:"https://docs.google.com/forms/d/e/1FAIpQLSe0i4De809KXVCdljGKrjMj3lxhuzbuFKCtY5PEQPCYtGxFMg/viewform?usp=sf_link",type:301},{source:"/resources/design-principles",destination:"https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md",type:301},{source:"/style-guide*",destination:"https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md",type:301},{source:"/youtube",destination:"https://youtube.com/@flutterdev",type:301},{source:"/go/2D-Foundation",destination:"https://docs.google.com/document/d/1C2hAq-gMAIx4Cbym7EMhVAcPZ2hmNxlgijpYmgTpmUU/edit?usp=sharing",type:301},{source:"/go/a11y-links",destination:"https://docs.google.com/document/d/1FxzANiyJFkoRxJ7V2IejpfB5DX19gxiJps-8N2oUW_U/edit#",type:301},{source:"/go/a11y-text-attributes",destination:"https://docs.google.com/document/d/1vhbwxFOTRTUvW2C_onFffEH5Fn2pAfMQDyv-gekias0/edit?usp=sharing&resourcekey=0-ChQvjIoWYO7jXcaCXMj5Qw",type:301},{source:"/go/actions-and-shortcuts-design-revision",destination:"https://docs.google.com/document/d/1A9yald55O_C6Weqp4tOtyMisfOC1ZC0UMq7Yc-pNfVQ/edit",type:301},{source:"/go/adaptive",destination:"/ui/adaptive-responsive",type:301},{source:"/go/adaptive-layout-foldables",destination:"https://docs.google.com/document/d/1qhrpTWYs5f67X8v32NCCNTRMIjSrVHuaMEFAul-Q_Ms/edit?usp=sharing",type:301},{source:"/go/add-missing-features-to-selection-controls",destination:"https://docs.google.com/document/d/1QizXwBiO-2REIcEovl5pK06BaLPOWYmNwOE5jactJZA/edit?usp=sharing&resourcekey=0-1pb9mJiAq29Gesmt25GAug",type:301},{source:"/go/add-to-app-samples",destination:"https://docs.google.com/document/d/1M_GsAL8C1NxbsmzI35w2Th1wvX1KMoPHY5yeeNbzjY0",type:301},{source:"/go/admob-banner-recycle-perf",destination:"https://docs.google.com/document/d/1A5IokVzA770_9EnatIV-rd4Zf51p06nR4i7hM8K3E_o/edit?tab=t.0",type:301},{source:"/go/agentic-apps-campaign",destination:"https://flutter.dev/events/building-agentic-apps",type:301},{source:"/go/agentive-apps-campaign",destination:"https://flutter.dev/events/building-agentic-apps",type:301},{source:"/go/allow-datatable-row-height-to-expand",destination:"https://docs.google.com/document/d/1qr1IgaU2z9eaM6zCa4u-Q8kJD5Zq7IcdxVyrgR7CwZc/edit?usp=sharing&resourcekey=0-1bNp0ocF4AwGBj6NvRfrEA",type:301},{source:"/go/analyze-flutter-in-runtime",destination:"https://docs.google.com/document/d/1VZOv9NsmNeXaqM9h9EjKTz5cg7lEsA623XBfbojXU5U/edit?usp=sharing",type:301},{source:"/go/android-assets-in-flutter",destination:"https://docs.google.com/document/d/1jymgQYxRTe5rdprt74ERh7Jsa0lfnRuMnkOmJusLWsE/edit",type:301},{source:"/go/android-built-in-kotlin-support",destination:"https://docs.google.com/document/d/1iAMVVvsHqs130hc3-49sstv7n63TgM5aUd-cqAGWHfc/edit",type:301},{source:"/go/android-dependency-versions",destination:"https://docs.google.com/document/d/1qeeM5QG-jiafttSgvc7yvC19IDRggFFZQTktBVxL6sI/edit?usp=sharing&resourcekey=0-HLEAiBOMxAlQxDs-mEeffw",type:301},{source:"/go/android-embedding-dependencies",destination:"https://docs.google.com/document/d/1vITp2mUZRa-cmll0sPH0zjNgPlyvOMx7awxPNRAPyic/edit",type:301},{source:"/go/android-embedding-move",destination:"https://docs.google.com/document/d/1nQujwZfEe3QOHTyZn160eImpoJOYioADP09DtumcLcc/edit?ts=5d8041db#",type:301},{source:"/go/android-java-gradle-error",destination:"/release/breaking-changes/android-java-gradle-migration-guide",type:301},{source:"/go/android-migration-summary",destination:"https://docs.google.com/document/d/1wKspwf6LQu6uo32uQ9NcukfiKhLL4ButV9cwpjeb8QI",type:301},{source:"/go/android-ndk-version",destination:"https://docs.google.com/document/d/1sljfqHpI5m4uxsL7B89yhYluO97Mz1YKyA0VgzzXyZ4/edit?usp=sharing&resourcekey=0-Ts9Rk8jbJor7WBMMiehKWg",type:301},{source:"/go/android-plugin-migration",destination:"/release/breaking-changes/plugin-api-migration",type:301},{source:"/go/android-project-migration",destination:"/platform-integration/android/androidx-migration",type:301},{source:"/go/android-root-predictive-back",destination:"https://docs.google.com/document/d/1BGCWy1_LRrXEB6qeqTAKlk-U2CZlKJ5xI97g45U7azk/edit#",type:301},{source:"/go/android-splash-migration",destination:"/platform-integration/android/splash-screen-migration",type:301},{source:"/go/android-startup-tracing",destination:"https://docs.google.com/document/d/1I7jvRg3UmG7P84hdis-9A00fEr2Ntj-K7f_FbGLubGE/edit?usp=sharing",type:301},{source:"/go/androidx-transition",destination:"https://docs.google.com/document/d/1JnMxQinUeouuV5kcenoq03TsvLyn_xaHXIT_6c5b7nQ",type:301},{source:"/go/animated-widget",destination:"https://docs.google.com/document/d/1St9DhxNTuELg7CNBIL9D_gQfBUByXaoWBwq8_riby7g",type:301},{source:"/go/annotator-tree",destination:"https://docs.google.com/document/d/1YtkdZSx1687Ipbff06qp3XglmJym3Wc9boY4I-bYs4A/edit",type:301},{source:"/go/api-for-transform-performance",destination:"https://docs.google.com/document/d/1Fxdlf7JsA-yAwc_RNuboMG-vhIhchRBZGvDSwg5qR0A/edit?usp=sharing",type:301},{source:"/go/app-extensions",destination:"https://docs.google.com/document/d/1WloBrAYpqNKOhEHytTqJEHshcXxHflLUGKvULKRHbuU/edit?usp=sharing",type:301},{source:"/go/apple-pencil-double-tap-support",destination:"https://docs.google.com/document/d/1r4P5r-jGt2Sjqro3ldCU2axUiHTpu3yhIycnI94OKQw/edit?usp=sharing",type:301},{source:"/go/apple-squircles",destination:"https://docs.google.com/document/d/1CJXULKJGQt22FOFsrlm2TKVjKBtif1yU4U50cMfL6Kc/edit?usp=sharing",type:301},{source:"/go/application-lifecycle-events",destination:"https://docs.google.com/document/d/1FL5Fgk7EzMNOpJL0GZJt-lfWtGt2igHuC2ZznItS2l8/edit?usp=sharing&resourcekey=0-IZNfpSVPkMbigQLLXoJcfw",type:301},{source:"/go/asset-lookup-in-plugin-binding",destination:"https://docs.google.com/document/d/1iwGFWipC0v0FKvAgbjGl0kaV9IGox1YiD8jUP8Vvkjc/edit",type:301},{source:"/go/asset-transformation",destination:"https://docs.google.com/document/d/1i_trjTF-gJ3Xj-GUtVmyLETa5CwStvabEjtD5z8ArC4/edit?usp=sharing",type:301},{source:"/go/autocomplete",destination:"https://docs.google.com/document/d/1fV4FDNdcza1ITU7hlgweCDUZdWyCqd-rjz_J7K2KkfY/edit?usp=sharing",type:301},{source:"/go/automated-revert-workflow",destination:"https://docs.google.com/document/d/1lBkWo9rzHseoYaEaa12HOjVS32uQ5rFdLRUCO_CQoiQ/edit?usp=sharing",type:301},{source:"/go/automatic-android-plugin-registration",destination:"https://docs.google.com/document/d/1xNkBmcdVL1yEXqtZ65KzTwfr5UXDD05VVKYXIXGX7p8/edit",type:301},{source:"/go/automatic-pointerinterceptors",destination:"https://docs.google.com/document/d/10EQC_bDsTnrUpEOSxN6Fnogu3ouZCUlXEZFof-oMKc4/edit?usp=sharing",type:301},{source:"/go/autosubmit",destination:"https://docs.google.com/document/d/14oAi2gHMDnqOVe2rEl0syny7_7xsCHh83HtdomQgouM/edit?usp=sharing",type:301},{source:"/go/baa-registration",destination:"https://flutter.dev/events/building-agentic-apps#registration",type:301},{source:"/go/backdrop-filter-with-overlay-canvas",destination:"https://docs.google.com/document/d/1t_offKOgkuVzvB3fqGTfcltovb-yxqV6tbuP1qIBqVI/edit?usp=sharing",type:301},{source:"/go/backing-stores-for-multi-view-partial-repaint",destination:"https://docs.google.com/document/d/1CPpA86BTF6JTvztmRWCeLGQoPEqX_msYMG6avdqhaFk/edit?usp=sharing",type:301},{source:"/go/base-annotations-local-position-on-region",destination:"https://docs.google.com/document/d/1r7FQTOw2vZJZ5c0VoNqi9CWmZY3MvUfz0spdf0-nK6k/edit",type:301},{source:"/go/basic-color-set",destination:"https://docs.google.com/document/d/1y38TN9AUTyd0eTbu4kx4FiNgfsLDPvWvi92Fv5HWFjQ/edit?usp=sharing",type:301},{source:"/go/batch-release-one-pager",destination:"https://docs.google.com/document/d/1jUoFaawutbYsCI5oY3pDP_l-xpv6FhDKlcI1-EoT02s/edit?usp=sharing",type:301},{source:"/go/blankcanvas",destination:"https://docs.google.com/document/d/1rS_RO2DQ_d4_roc3taAB6vXFjv7-9hJP7pyZ9NhPOdA/edit?resourcekey=0-VBzTPoqLwsruo0j9dokuOg",type:301},{source:"/go/bottom-navigation-bar-title-deprecation",destination:"https://docs.google.com/document/d/1L-2nPf5hbLGNoRvOSUmnxgUHahBVzW1ybhTXGY3ObDw/edit?usp=sharing",type:301},{source:"/go/buffer-queue",destination:"https://docs.google.com/document/d/1rXl9G-VmISVlVkKVgrnQKeX7Mexyez0x9HZ5F5yKxrQ/edit?usp=sharing",type:301},{source:"/go/build-aar",destination:"/add-to-app/android/project-setup#option-a---depend-on-the-android-archive-aar",type:301},{source:"/go/build-dashboard-v2",destination:"https://docs.google.com/document/d/1kwh48xYuoVtadYFb2I2t6BJMGEW07K7T5WYcieAZZiY",type:301},{source:"/go/build-flows",destination:"https://docs.google.com/document/d/1imsVxbeAsttTi90EFpbnbVzov9z0xXd7tLCAr_QAJ38",type:301},{source:"/go/buildtextspan-buildcontext",destination:"https://docs.google.com/document/d/1nr-g45gXcWTYoW9UmChZV7Ije3lKP4pEvDQCdz6NFdI/edit?usp=sharing",type:301},{source:"/go/cacheless-shared-preferences",destination:"https://docs.google.com/document/d/1DNhUYIJaDA10g2cOqipKyPuPkgL_FYPfgkF9Coqcc6k/edit?usp=sharing",type:301},{source:"/go/calculating-flutter-frame-rate",destination:"https://docs.google.com/document/d/1YGLELXWdC6YIN03QzEzcIRJc56gCnabPBW8BHCAFR58/edit",type:301},{source:"/go/camera-privacy",destination:"https://docs.google.com/document/d/1t_5FYzOTlBWC6arHc4_8VuG0BUOtIyP9xWvbDER5Y9I/edit",type:301},{source:"/go/camera-custom-codecs",destination:"https://docs.google.com/document/d/1izEaCsNQGO25xKSSQ90t_OLX65qfhEXuEYhD0smpZ_4/edit?usp=sharing",type:301},{source:"/go/can-i-use-impeller",destination:"https://docs.google.com/spreadsheets/d/1AebMvprRkxP-D6ndx920lbvDBbhg-sNNRJ64XY2P2t0/edit?gid=0#gid=0",type:301},{source:"/go/cascading-menus",destination:"https://docs.google.com/document/d/17XOSGzLzqbpNcCUwakM_WQ2ZOMcUOXcPC__7nPORwms/edit?usp=sharing&resourcekey=0-hg74S2vAAqwJFN984ZXQHg",type:301},{source:"/go/center-floating-label-inputdecoration",destination:"https://docs.google.com/document/d/1sxP91vZiY7McmSMmzrboklIJWQ_6pSS9MBSCrQq016M/edit#",type:301},{source:"/go/change-default-textselectionhandlecolor-to-accentcolor",destination:"https://docs.google.com/document/d/1RJQd5ABWJ_7DZN19aTZBCE7xHzlC4MYBP1bWE2FWcvc/edit",type:301},{source:"/go/chip-usedeletebuttontooltip-deprecation",destination:"https://docs.google.com/document/d/1wc9ot7T2E7hJubYxEWMX230a79wYSiFey4BHxnEzHtw/edit?usp=sharing&resourcekey=0-Bo7KPqEtkWgZcSuRCqwQ5w",type:301},{source:"/go/ci-post-test-analysis",destination:"https://docs.google.com/document/d/1V0W6q7gkk2hHFLYb3t7JFr84Km5uhKl9T3Ksb1IpkLQ/edit?usp=sharing",type:301},{source:"/go/clean-up-not-disposed-disposables-in-ff",destination:"https://docs.google.com/document/d/1bXannXQ8rEtfwxEVd7LDo7xiVu5-QxRoall28MIIFss",type:301},{source:"/go/clip-behavior",destination:"https://docs.google.com/document/d/1gC5Di4ykTCqupD77PWpy9D8xXo0Ide5CnrH0zzVIhKo/edit",type:301},{source:"/go/codeshare-avatar",destination:"https://docs.google.com/document/d/1tFLsdeahcHvjS9ERo9926duK7AshZiHEiCd3yZ9ZgI0/edit?usp=sharing",type:301},{source:"/go/codeshare-expansion-tile",destination:"https://docs.google.com/document/d/1GTyEZjjTpx6fcrzOX-6kQ3phwu5UhUGLOWXJoy0yto0/edit?usp=sharing",type:301},{source:"/go/codeshare-tooltip",destination:"https://docs.google.com/document/d/1K3msJRq_Rru5hMhUYl34U0CTjM889J_xekRSGj1gSJo/edit?usp=sharing",type:301},{source:"/go/colorscheme-enhancements",destination:"https://docs.google.com/document/d/1cIBW0jMRrtWVA5E0TB0qmwqSgLoVDIVPOysKYJOvH7U/edit?usp=sharing",type:301},{source:"/go/colorscheme-generation",destination:"https://docs.google.com/document/d/1P7f-DGPWz6HCbwLoAruRuWtakPx4VY-e8nT_yuQ71sc/edit?usp=sharing&resourcekey=0-qxeub7yCKa_No0HlrzEk-g",type:301},{source:"/go/colorscheme-m3",destination:"https://docs.google.com/document/d/1mY1ahBQEMAfsawGJMX5S34pXb7c8dHGatyotClReeas/edit#heading=h.cnnhzna3pz6d",type:301},{source:"/go/compass-25",destination:"https://github.com/flutter/demos/tree/main/compass_25",type:301},{source:"/go/configurable-autosubmit",destination:"https://docs.google.com/document/d/14pf4jfBy1-PHYmJLVbeqrh1swTF01SZ2YD3DR_Qv3kM/edit?usp=sharing&resourcekey=0-AW7-kNNGmmpSUqyOvBdwRg",type:301},{source:"/go/contextual-menus",destination:"https://docs.google.com/document/d/1F1itGgbSS3Cbq70hScSCNriDoux1sMGF9LHZsMdvU74/edit?resourcekey=0-RkHGwhe-tcoTGlaQyclPtQ",type:301},{source:"/go/contributor-ladder",destination:"https://docs.google.com/document/d/1ITkAaE96R1kWgttDFVQYYKvdyHlcOz_Rs1QyiS8JMEY/edit?usp=sharing",type:301},{source:"/go/cross_file-content-uri-implementation",destination:"https://docs.google.com/document/d/1-d7uWlB9ERPIOFRQ1nJGGiPDb9ALh7QxincEPOmGc3c",type:301},{source:"/go/cupertino-bottom-sheet-routes",destination:"https://docs.google.com/document/d/16eMliX4HsDjRmEob2lksM6JBq2_LPVM26uYGyTid1ec/edit#",type:301},{source:"/go/cupertino-context-menu-action",destination:"https://docs.google.com/document/d/1lCuPyAbIzAr0c2KIEZhREC_EnkTKBxNiqP6lGLT-KpU/edit",type:301},{source:"/go/cupertino-datepicker-redesign",destination:"https://docs.google.com/document/d/1Ib5ztLzc19e1Uggz16BFlrJMg1TOdYLyP-WqtTpDltM/edit?usp=sharing&resourcekey=0-11oVmOsTHLD5fqxdAHZqNg",type:301},{source:"/go/cupertino-expansion-tile",destination:"https://docs.google.com/document/d/13ivkzGpYDn7yJYFCwLmQhnk3W_jCaTaWMzjzK0LzsGU/edit?usp=sharing",type:301},{source:"/go/cupertino-increase-contrast",destination:"https://docs.google.com/document/d/1kePVlqWvJu5Ph0RL6wgg67F3SATmsJ8QY5N0S1MvaGg/edit#",type:301},{source:"/go/cupertino-switch-onoff-labels",destination:"https://docs.google.com/document/d/1DD5gx8x0ej5AJzGxzpr4hpgpqsvcDu-ozKliGnhHm7c/edit#",type:301},{source:"/go/custom-colors-m3",destination:"https://docs.google.com/document/d/1LbD4JqBgAfHex02oR3r2jyu9lTBBNBmyec2ovT59Kr8/edit?usp=sharing",type:301},{source:"/go/custom-tabs-support",destination:"https://docs.google.com/document/d/1GvsmPQz6aKixNUphL10XmSOL7M6nOH7W1jYwNp0LwnA",type:301},{source:"/go/dart-flutterbuffers",destination:"https://docs.google.com/document/d/1rqKq6DwqaeBfTLTixxurrdT9HwZ02DyRjFigO9SiB1Q/edit#",type:301},{source:"/go/dart-io-as-package",destination:"https://docs.google.com/document/d/1XIDcawCBVqpsunm1MdeBYggNJ8qnFqqB9WEi7lgnthc",type:301},{source:"/go/dart-oriented-flutter-plugin",destination:"https://docs.google.com/document/d/1oT86S2SZClfJQ5GDQ9I8ZI_VzvKnquSbABuoNdPbQW8/edit?usp=sharing",type:301},{source:"/go/dart-patterns",destination:"https://docs.google.com/document/d/1p6JV-pvr8_45qI5fumv6Ir60wEeagKCceTngYOXt_U4/edit?usp=sharing&resourcekey=0-jGJyRsTPSIpGPN0xgvzSwg",type:301},{source:"/go/dart-static-analysis-ir",destination:"https://docs.google.com/document/d/1xJYGBSoXL7h1z43NnjFsXxauQGXvUnacef4XR1zmeGA/edit#",type:301},{source:"/go/dart-tooling-daemon",destination:"https://docs.google.com/document/d/1Qldlyi2TmzTsDN1AS5AfjE93-A2nR296Np5bZW2aBwU/edit?usp=sharing&resourcekey=0-ckijCX_-ZSy-J_KBI-FQ1Q",type:301},{source:"/go/dart-workspace-support",destination:"https://docs.google.com/document/d/1_SfTg0W8PASZ2neTkNhYjcVDdFvomeoAnZ_XqflIx88/edit?usp=sharing&resourcekey=0-dcmTZFHicV9ZZL863zC5-w",type:301},{source:"/go/dartle",destination:"https://docs.google.com/document/d/1Ei0ZIqdqNjxTHoGB3Ay6SWQg3DMSsKKWl70XoBUCFTA",type:301},{source:"/go/dash-tooling-plugin-strategy",destination:"https://docs.google.com/document/d/1Zc0AE8JTKfOSA-IFpEYcPFJ2eALbXE3AG4ZucWXeMig/",type:301},{source:"/go/data-sync",destination:"https://docs.google.com/document/d/1yH96-p-SkMmt6hL5xHHDtMvCKRz2XGrMuw9ZY_nE954",type:301},{source:"/go/decouple-design",destination:"https://docs.google.com/document/d/189AbzVGpxhQczTcdfJd13o_EL36t-M5jOEt1hgBIh7w/edit?usp=sharing",type:301},{source:"/go/decouple-menu-state",destination:"https://docs.google.com/document/d/1enHNxOzwI1WDC4ZOqQXKAGbBX07nD1yLcgSO8t7lyg8",type:301},{source:"/go/decouple-page-transition-builders",destination:"https://docs.google.com/document/d/1iIoJH_TkeCWl14h_jnVqW5EG-y2y7YKWbnkPYMZUZUo/edit?usp=sharing",type:301},{source:"/go/decoupling-design-from-text",destination:"https://docs.google.com/document/d/1oFezK5leJzTWA5lsw3BQGx7gLbhpSL8dMleU3HD7bNY/edit?usp=sharing",type:301},{source:"/go/dds-daemon",destination:"https://docs.google.com/document/d/18IgFakijiv9CLFGT5BckbwZuf2pqhOUeN27mB9XqvpQ/edit?usp=sharing&resourcekey=0-rBHvH9gLXLjGPWt5WE-XFg",type:301},{source:"/go/decoupling-framework-tests",destination:"https://docs.google.com/document/d/1UHxALQqCbmgjnM1RNV9xE2pK3IGyx-UktGX1D7hYCjs/edit?pli=1&tab=t.0",type:301},{source:"/go/deep-link-flag-migration",destination:"https://docs.google.com/document/d/1TUhaEhNdi2BUgKWQFEbOzJgmUAlLJwIAhnFfZraKgQs/edit?usp=sharing",type:301},{source:"/go/default-animation-style",destination:"https://docs.google.com/document/d/18c28hbe1mRBZLcnaip5LM9zlshIOEpuvBLWKZiXGe9g/",type:301},{source:"/go/default-scroll-action",destination:"https://docs.google.com/document/d/1SJvom6k4YW4EtFIY4VpAhAOH-jWhRkHVfpVsOBB56KM/edit?usp=sharing",type:301},{source:"/go/deferred-image-decoding",destination:"https://docs.google.com/document/d/1f-NCEF0lrHGd3DsieS1tZ_NWbYTjA4GTqESMbGFsU2U/edit?ts=5e17a77d&pli=1#",type:301},{source:"/go/delegate-route-transitions",destination:"https://docs.google.com/document/d/10C5VbqhU7FkkDSVlcVZmrl8UyL7nw4CeL4QdPKMjsEk/edit?usp=sharing",type:301},{source:"/go/deprecate-html-renderer",destination:"https://docs.google.com/document/d/1DGamHsa2lz_Qtgfrfa3j3fRaEopJXc7tCFVM1TQlck8/edit?usp=sharing&resourcekey=0-IjkqrCoo_EcRRS2bPYKI8w",type:301},{source:"/go/deprecation-lifetime",destination:"https://docs.google.com/document/d/1Gc3ecrMghzc7WU4pgzKB8uBaTPpRdWfozn0otBbxR7s/edit?usp=sharing",type:301},{source:"/go/deprecation-statustransitionwidget",destination:"https://docs.google.com/document/d/1NdxSKSEKa-E9YDUAyONQVad1bAZdc8bqT4zGVjSBQPo/edit?usp=sharing&resourcekey=0-CkJogS7MIhfZeabrIAUPhQ",type:301},{source:"/go/deprecations-removed-after-1-22",destination:"https://docs.google.com/spreadsheets/d/1kZOej-h4AiRW2Td3NUnVMSb8PYLB63mpj-oFYqb_4tc/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-2-10",destination:"https://docs.google.com/spreadsheets/d/12krawYCu6X_g_5wLGpmiAIi-VcTRV6xG7RGbRovuatQ/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-2-2",destination:"https://docs.google.com/spreadsheets/d/18VuxojMGFKrFJCeilg3tErAtp23-_tp43XUioC_34To/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-2-5",destination:"https://docs.google.com/spreadsheets/d/191-PZEOmlT7Xw6MDFFyf5HyneTaiCqI4OITtolbXD6c/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-3-10",destination:"https://docs.google.com/spreadsheets/d/1gs2tvYBuwycP1XAZsDbMuqP5jUa6gWH1a0ZQGrzjXvw/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-3-13",destination:"https://docs.google.com/spreadsheets/d/1zzyBRdIkqiEcpv_njEQA7pyG7X8PcNhvXFYrEAB8P78/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-3-16",destination:"https://docs.google.com/spreadsheets/d/1ei3UmfvhmGGuwAGgLaQo1k_pgdu9Mu06tHPuSaS4TI4/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-3-19",destination:"https://docs.google.com/spreadsheets/d/1x_UJ7GiB61ByBo6cPLm_JfLrgFqAfkQo7pPK_lHvsUo/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-3-3",destination:"https://docs.google.com/spreadsheets/d/13cZzXz3_yMhnMH3Fyv2TKR_3974el103xlZuNWdevZM/edit?usp=sharing",type:301},{source:"/go/deprecations-removed-after-3-7",destination:"https://docs.google.com/spreadsheets/d/1WCQmKobsgslfhqf6uL7I2BKk5KKhGX-n_xfk9g3CTEE/edit?usp=sharing",type:301},{source:"/go/desktop-multi-view-runner-apis",destination:"https://docs.google.com/document/d/1WkJuzifgJXyceaSoCCu8qTETYmYBOYKoz7Qaxtsore4/edit?usp=sharing",type:301},{source:"/go/desktop-multi-window-support",destination:"https://docs.google.com/document/d/11_4wntz_9IJTQOo_Qhp7QF4RfpIMTfVygtOTxQ4OGHY/edit",type:301},{source:"/go/desktop-release-conductor",destination:"https://docs.google.com/document/d/15AwPXNd5FvItAqM0wa2VK0tRrqtRTgM8vR5LQeT2Mag/edit?usp=sharing&resourcekey=0-yZ2FAN-wEKwKT-ymdisetA",type:301},{source:"/go/desktop-resize",destination:"https://docs.google.com/document/d/1OTy-qCGdP7tYfrEKCNX9A24sgnx5vshfK6FupfniyxA",type:301},{source:"/go/desktop-resize-macos",destination:"https://docs.google.com/document/d/1slGllp1Jhde7wkF6snqGhdrZwHV1VVmXeIF3f0t24JU/edit?usp=sharing",type:301},{source:"/go/detect-memory-leaks",destination:"https://docs.google.com/document/d/1hvRVpULPnwGjBc5nw52iSaDfB8hjIzbaQuECHmKvDrY/edit",type:301},{source:"/go/developing-plugins",destination:"/packages-and-plugins/developing-packages#plugin",type:301},{source:"/go/devintel-q1-2024",destination:"https://docs.google.com/document/d/15W9wsqzFcidXR12DiPH5r5ZDcZw_wDa7Zi9CAAe34Y4/edit?usp=sharing&resourcekey=0-XH0RYaDhNkqa_WCjbH0otA",type:301},{source:"/go/devintel-q2-2024",destination:"https://docs.google.com/document/d/17BdqRJLLuFeG-3YEumpOGKUJW-kVDoQFLuchCZgyM7c/edit?usp=sharing",type:301},{source:"/go/devintel-q3-2024",destination:"https://docs.google.com/document/d/1Gpb9Nuu79s8EZL40N6JXZGIu12TiP4570RBZT1O4zLg/edit?usp=sharing",type:301},{source:"/go/devintel-q3-2023",destination:"https://docs.google.com/document/d/1VGux5IxePO8lN_7kUuzYJtcJ76fkldr_TJv4R0tciYk",type:301},{source:"/go/devtools-discoverability-in-vs-code",destination:"https://docs.google.com/document/d/1iRx1_QpBOS88rS5shylzv_i5BisFDskavBuAeYGOUOs/edit?usp=sharing",type:301},{source:"/go/dirty-region-management",destination:"https://docs.google.com/document/d/19WDvGJql1bmnECTdEzJFeH9Ixw4AP2R7JlgujBSbDbk/edit?usp=sharing",type:301},{source:"/go/disable-dropdownmenuitem",destination:"https://docs.google.com/document/d/13W6PupVZUt6TenoE3NaTP9OCYsKBIYg9YgdurKe1XKs/edit?usp=sharing&resourcekey=0-6n8D5zSLjWs2ZncIyG6HUw",type:301},{source:"/go/docs-nnbd-migration-guide",destination:"https://docs.google.com/document/d/1U8blxmkArsd09C-IGe3cQbJ5SvDLhwn0rWWsY2SthZ4/edit?usp=sharing&resourcekey=0-0CviWT1D47VGxK-Li4_NIw",type:301},{source:"/go/double-buffered-window-resize",destination:"https://docs.google.com/document/d/1allwMZXgX9gGVPguFy3-XydjXEIJgYR1Uhz8Vhm9Rrs/edit?usp=sharing",type:301},{source:"/go/downward-memory-pressure",destination:"https://docs.google.com/document/d/15zslrHsWigh9e8LeQxfieWwnXDBx5jicFPXD6l_SsH4/edit?usp=sharing",type:301},{source:"/go/drm-embedder",destination:"https://docs.google.com/document/d/1XbzbpbVBFC4H-iJfibdKEFOWn8PUCd3PQQDAOaj--wQ/edit?usp=sharing",type:301},{source:"/go/drm-embedder-api",destination:"https://docs.google.com/document/d/13Y0npyYM8iIXDqfvvHNYWFj3aO1xGT20rFbwV4-gRq8/edit?usp=sharing",type:301},{source:"/go/drm-embedder-metal",destination:"https://docs.google.com/document/d/1ed0hv_0UWUyRCpRWRbv-Ff7sxMimIXwCk5kepWbNA5k/edit?usp=sharing&resourcekey=0-sCLVUBH5gQh-CvdULgkOhw",type:301},{source:"/go/drm-embedder-vulkan",destination:"https://docs.google.com/document/d/1MC-2vM1eqlpnm1QFvijCzTDL8pvHpaxqNxaKnA7Soec/edit?usp=sharing",type:301},{source:"/go/dynamic-plugins",destination:"https://docs.google.com/document/d/18AQCXxFrCu8UahRVy__VAQTWUnaonKtl24TUr86KkXs",type:301},{source:"/go/education",destination:"https://docs.google.com/document/d/1PG2aPAkWkJ4q6k0wKlVwo86QZ9yLlZOeMVHStzDhwp4/edit?resourcekey=0-rzmUbzd7yaIHRbgh0kqqMg",type:301},{source:"/go/eliminating-nullok-parameters",destination:"https://docs.google.com/document/d/1LKBL0S1uyhACDiUXILhLKFZH8Cpl_w3mXjHgaE8_--U/edit?usp=sharing",type:301},{source:"/go/embedder-vulkan-support",destination:"https://docs.google.com/document/d/1vaUkfDett2mzKIUmq6uC-7Se2NEAf4XkwKU7ISTJpQE/edit",type:301},{source:"/go/encoded-image-dimensions",destination:"https://docs.google.com/document/d/18KL4CILgjwjeb6vXDsIn5U7vHGSonpgR05FqaSsvoVc/edit",type:301},{source:"/go/engine-build-definition-language",destination:"https://docs.google.com/document/d/1R2X4-YztJMyt82nPLXbQhDA50PcMDgavXN4JUu39hKI",type:301},{source:"/go/engine-cpu-profiling",destination:"https://docs.google.com/document/d/1z_V69XzRct3vR7mBZ9tuuS1pZ_e7FQkuzbVJjXxMeaI/edit",type:301},{source:"/go/engine-rtree",destination:"https://docs.google.com/document/d/1UGV0qerZ8o3eGrjm1axp0NoLWrT0KmTonMamb-xifEM/edit?usp=sharing&resourcekey=0-wh0paKk1H1vZbzxKxIj2jA",type:301},{source:"/go/engine-v2-recipes",destination:"https://docs.google.com/document/d/1vP26tMAJqqHlIF2QZUfcirFe5zmei7gZ1zQ6IVGQPU4",type:301},{source:"/go/error-handling",destination:"https://docs.google.com/document/d/1HdGLKoVw_KWLrVzDNZ8Lk5nN-biHQzi_CS5mCkpiDwA/edit",type:301},{source:"/go/everything-builds-from-a-module",destination:"https://docs.google.com/document/d/1fkUpos4hbJF0NYSwjNLWct2UGDg-AfhxzlR6p2g0w9M",type:301},{source:"/go/expansible-state-mixin",destination:"/go/codeshare-expansion-tile",type:301},{source:"/go/exposing-scroll-behaviors",destination:"https://docs.google.com/document/d/1W5PSIO1cVj7v6_xayydyFN3abWFOJTmFHKGBA9VKbbg/edit?usp=sharing&resourcekey=0-AHb9dJP8Knv3GWwZLnzZWQ",type:301},{source:"/go/external-drag-and-drop",destination:"https://docs.google.com/document/d/1toFc3Fjafv8jDToQ85S5AquC7NOoJ2ZO_Or484nsEuo/edit?usp=sharing",type:301},{source:"/go/fallback-image-decoding",destination:"https://docs.google.com/document/d/1G-5s6uoP1H_7f_ByLrvCVcoFXYZ80CixkMbbHMsMCag/edit?usp=sharing",type:301},{source:"/go/faster-cocoon",destination:"https://docs.google.com/document/d/1NXP0_9TJ1qz674iYyOGVLEHWVpmbXr5yjhBrdoU_x5g/edit",type:301},{source:"/go/federated-platforms",destination:"https://docs.google.com/document/d/1z_4Z5JMTbk5c4FpayVAb-PTz2wLP-aSCirbieavT3Ws/edit?usp=sharing",type:301},{source:"/go/federated-plugins",destination:"https://docs.google.com/document/d/1LD7QjmzJZLCopUrFAAE98wOUQpjmguyGTN2wd_89Srs/edit",type:301},{source:"/go/ffi-in-embedders",destination:"https://docs.google.com/document/d/11siUQs1Fn7G1Baue6YYrJHT0ieNiC-956yVv4gqAhr0/edit?tab=t.0",type:301},{source:"/go/ffi-plugins",destination:"https://docs.google.com/document/d/1vMw-W6L-r-uL1SUgzDh6J5rmtqum7SZdO9khWACrZJI/edit?resourcekey=0-vvjEK88N-pApyKTPWJ2IZQ",type:301},{source:"/go/file-system-access-from-devtools",destination:"https://docs.google.com/document/d/1BNgZka2N9HYL11A4IdR8FqsSW1VMr9Vo7CSrjY9rcic/edit?usp=sharing&resourcekey=0-H1f6lS5KjytrUCWc1vcS_w",type:301},{source:"/go/flame-dartpad",destination:"https://dartpad.cn/?id=3e52ca7b51ba15f989ad880b8b3314a2",type:301},{source:"/go/flavor-specific-assets",destination:"https://docs.google.com/document/d/1_3GwdRZ1WPBqR9koNxESfAXHqynv36__ctMqN-NRG0k/edit?usp=sharing",type:301},{source:"/go/floating-snackbar-offset",destination:"https://docs.google.com/document/d/1elP-y83PtvfAZHNcpHCtnOFhZO9VnnlobwfQ33QO4hg/edit",type:301},{source:"/go/floating-widgetspans",destination:"https://docs.google.com/document/d/1I-VqCxvszXGAas_6EE9b6ZIzyMY3HjxDxGW9_DWWd7M/edit",type:301},{source:"/go/flutter-android-emulator-testing",destination:"https://docs.google.com/document/d/10wYUcLcSTF4Epg2EUGoBqOkkOe4zxKHvYKjXFZAOgGs/edit?usp=sharing&resourcekey=0-pltjPvEtVezXDADMbUwFHQ",type:301},{source:"/go/flutter-dependency-hosting",destination:"https://docs.google.com/document/d/1EKb1VypI0ArXqwBWJKGTsiQ2WU0ruYb55JpIeKxWaDs/edit",type:301},{source:"/go/flutter-developer-tooling-plugins",destination:"https://docs.google.com/document/d/189A-T-pcHPuds8pOtbzLS8Wl6Hr0AIAIl0aRTPvLKec/",type:301},{source:"/go/flutter-devtools-extensions",destination:"https://docs.google.com/document/d/189A-T-pcHPuds8pOtbzLS8Wl6Hr0AIAIl0aRTPvLKec/",type:301},{source:"/go/flutter-devtools-static-extensions",destination:"https://docs.google.com/document/d/11J4h1oEfB9wBoRYUy4KzclnKITBY-234jKpU3kq4V4w/edit?resourcekey=0-pPo85Svkb9lKdtlrhMCTbw",type:301},{source:"/go/flutter-doctor-app-folder",destination:"https://docs.google.com/document/d/1_N70oh5rl0pMlz-epE_3fIr7gqE94dgoV-DHq5OlF2I/edit",type:301},{source:"/go/flutter-drop-android-jellybean-2023",destination:"https://docs.google.com/document/d/1wWNly2SZRDqupSsHkBWDI_lS2MohBGEwPSXF6W05NOc/edit?usp=sharing",type:301},{source:"/go/flutter-drop-macOS-10.13-2022-q4",destination:"https://docs.google.com/document/d/1wHqr2cob78VfUKhOFEKjaUM_mnV4gL-mg3gSQCFhF7Y/edit",type:301},{source:"/go/flutter-drop-win7-2024",destination:"https://docs.google.com/document/d/18gfRT8klo0zEvn6fIpders7ghoWIBKO22cNYS22WLhc/edit?resourcekey=0-SFkxdqfyM6KNNkG4zS6aaA",type:301},{source:"/go/flutter-engine-clocks",destination:"https://docs.google.com/document/d/1Sx8QA1qXgJGw5r4ESviDnU2LSShNHiq_LjbRWPgSvXQ/edit?usp=sharing&resourcekey=0-BoBvLxgqf_nc_rwLc0zmTw",type:301},{source:"/go/flutter-engine-extensions",destination:"https://docs.google.com/document/d/1xG7jR4FserdW7TdwnklF3_lXUGmt4myPQjDGF3LFtCQ/edit?resourcekey=0-Iug4D2mWuyQI6suvC_2itw#",type:301},{source:"/go/flutter-file-system",destination:"https://docs.google.com/document/d/150KFR6WRSqpxbUcvQriBgrv6P5DMcq6dORikf_cOgZo/edit?usp=sharing",type:301},{source:"/go/flutter-for-embedded-linux",destination:"https://docs.google.com/document/d/1n4NXCk0QlGz16gUCtywR79H0Z1fzPqB2iNL8oxuexuk/edit?usp=sharing",type:301},{source:"/go/flutter-gradle-plugin-apply",destination:"/release/breaking-changes/flutter-gradle-plugin-apply",type:301},{source:"/go/flutter-iap-migrate-pblv2",destination:"https://docs.google.com/document/d/1XM16UsLE_aPWoZnheE9waO06mhxLkkWjpPf9jtI1AdY/edit",type:301},{source:"/go/flutter-ios-system-font",destination:"https://docs.google.com/document/d/1FG9ONkG-sLuFkb9vUAL2i7oeUtUqm8qiQJe_poK754w/edit",type:301},{source:"/go/flutter-lints",destination:"https://docs.google.com/document/d/1b0X0HOzvFY3WxI363U8BXx6Am13qFm96KlbS72mmFAk/edit",type:301},{source:"/go/flutter-migrate",destination:"https://docs.google.com/document/d/1fPnpUI6gXE9PkNWuFoAW20m_sQ87ZSC1rrn_D7fxBvs",type:301},{source:"/go/flutter-nonhost",destination:"https://docs.google.com/document/d/1rTLxAxsshEir-B2vE6DU_MaqMMusOdCgLGEGpBYG3CM",type:301},{source:"/go/flutter-pigeon-native-wrapper",destination:"https://docs.google.com/document/d/1Sw6F8GbNiO_lvS2fFjXrRYk2Go5RNDHudDT6kIX6Sm0/edit?usp=sharing",type:301},{source:"/go/flutter-platform-idling",destination:"https://docs.google.com/document/d/1RhSluOcHED6wEckY8CGK1mowRcWGAEGWraN6REPaORs/edit",type:301},{source:"/go/flutter-platform-views-windows",destination:"https://docs.google.com/document/d/10nVF2f-QTQ5o2HMEZ1fUlBJzK4dEmhuPHTVFEgW-JRs/edit?usp=sharing&resourcekey=0-J-Lsp7xfA-Nr5EMr1av-Xg",type:301},{source:"/go/flutter-plugin-languages",destination:"https://docs.google.com/document/d/1Ok_mUPgmw8_l-ynLueEKtXm2Fs48lEVB0JqZd7M7uyA/edit",type:301},{source:"/go/flutter-plugins-repo-migration",destination:"https://docs.google.com/document/d/1VihAgx1e-X_H8VRc9WmUv_7qqsi81eeHrrhwhHgwtjQ/edit?usp=sharing",type:301},{source:"/go/flutter-skia-ios-font-problem",destination:"https://docs.google.com/document/d/1UkAhEKUEWNUjfKlqoBjJnx8zXrqErIqidPYjd9FBwsg",type:301},{source:"/go/flutter-style-updates",destination:"https://docs.google.com/document/d/1Ao6RZmI4F8VSCpN-89o0Y6bZXhYb1-qgVGV5tALxm48",type:301},{source:"/go/flutter-support-multi-architecture",destination:"https://docs.google.com/document/d/19tzWySgtgtTA99XQsjx5Pg0SFJeZKXyUlYavR0EXv8c/edit?usp=sharing",type:301},{source:"/go/flutter-test-runner-simplification",destination:"https://docs.google.com/document/d/1BBjSAQRJYC3OxgpPq6MxEiO8Dp5qGYaxYYenF17mS1I/edit?usp=sharing",type:301},{source:"/go/flutter-tool-extension-api",destination:"https://docs.google.com/document/d/12iXm23TP6e6qS1Ntx-i-azcBWByiUl_kWjRxRC2YTz8/edit?usp=sharing&resourcekey=0-pVl2giJzGAHqOYEaZagVow",type:301},{source:"/go/flutter-web-scenelets",destination:"https://docs.google.com/document/d/1GUAx3aqdtEoaBMTNpsS1-i59QZlwTi6vUCASbaanPCo",type:301},{source:"/go/flutter-wrapped-2025",destination:"https://docs.google.com/document/d/1cE-oE1ULMeoguPDBKAqWY5AwQOuyZae-NF9v-2YhD9Y/edit?usp=sharing",type:301},{source:"/go/focus-management",destination:"https://docs.google.com/document/d/1-NS3NJFd2j9kzKj5GOPoWq-G0B6jrpiCL892EX5Nxgk/edit",type:301},{source:"/go/forge2d-workshop",destination:"https://web.archive.org/web/20260108140911/https://codelabs.developers.google.com/codelabs/flutter-flame-forge2d",type:301},{source:"/go/form-field-autovalidation",destination:"https://docs.google.com/document/d/16HAURcOtYAoHntDOEtdGy9KkKSItulG9Ldyjzdaosqo/edit",type:301},{source:"/go/fragment-program-support",destination:"https://docs.google.com/document/d/1R0qx3znTe_wcKZoeWwkMlgxs1MtrdiPJ_1xiuExZuH0/edit",type:301},{source:"/go/framework-devtool-a11y-support",destination:"https://docs.google.com/document/d/1lR0QaojgeprwwAy8Ks57rCPKUQOCCRz7Zh3yybKLOsk/edit?usp=sharing",type:301},{source:"/go/games-revenue",destination:"https://services.google.com/fh/files/blogs/gaming_ux_and_revenue_optimizations.pdf",type:301},{source:"/go/generated-plugin-registration",destination:"https://docs.google.com/document/d/17-GIBYMgaoYS_G34w-fL9oe8W_GX70v6X2bhfKSBrdo/edit",type:301},{source:"/go/generating-flutter-localizations",destination:"https://docs.google.com/document/d/18saQREDwBMPA_svFe9IkU22ljNXsLpYxiy__jzPCzEc/edit",type:301},{source:"/go/genui-codelab",destination:"https://codelabs.developers.google.cn/codelabs/genui-intro",type:301},{source:"/go/global-selection",destination:"https://docs.google.com/document/d/1q_ns8VVTS2vaKqGwr_hheZpsoli52wAM0QWi9_uBdnk",type:301},{source:"/go/global-surface-pool-for-macos",destination:"https://docs.google.com/document/d/1YUDyCQ1ocdFICOdWeZuuoOm_8bmmxWr0CnC-Y-qXuNI/edit?usp=sharing",type:301},{source:"/go/globalkey-duplication-refactoring",destination:"https://docs.google.com/document/d/15U1XDLrP-SXfgeu5DBBsA7MQuFpDUW005Y2ObwmYWIc/",type:301},{source:"/go/glossary-expansion",destination:"https://docs.google.com/document/d/1Tuv1Zx0F4yMVfxyChSAR21R8eXUi121J7piF_wyBDHg",type:301},{source:"/go/gn-ninja-engine-artifacts",destination:"https://docs.google.com/document/d/10C0yexPKlx4CdlF-fO4efGhQXEvDH92-RiAhBTj5EF8/",type:301},{source:"/go/go-router-improvements",destination:"https://docs.google.com/document/d/1_mRXinbL_rb0mUt6DAFZ8kj0kh33ZjEMJuUq4PJgwj8/edit?usp=sharing&resourcekey=0-sYbRzE9opneOFZ5F8J3gGw",type:301},{source:"/go/go-router-redirect",destination:"https://docs.google.com/document/d/1L940WGrM1YJ8BkJEpNd67fUqoqC6OsTfch4eH86E0xU/edit?usp=sharing&resourcekey=0-9oxsWU1tLpAACTUXyNjpkA",type:301},{source:"/go/go-router-support-imperative-routing",destination:"https://docs.google.com/document/d/1HCgLi7ialw2Eqv-f_2z9ogdOfcmepIIqCsRhF-DT9dM/edit?usp=sharing",type:301},{source:"/go/go-router-v10-breaking-changes",destination:"https://docs.google.com/document/d/1vjupshmFJtfGSOppZxp7Tzkq7dotcLxCcpdluuNYe1o/edit?usp=sharing&resourcekey=0-aS66t4OcDTjJW50s-veSzQ",type:301},{source:"/go/go-router-v11-breaking-changes",destination:"https://docs.google.com/document/d/1L2LPM_DBqKQx1pTRRfG7pi33P88iAypBju65rcMW_dU/edit?usp=sharing",type:301},{source:"/go/go-router-v12-breaking-changes",destination:"https://docs.google.com/document/d/1KIf_08oHZ18BU0JpNG9dxWP7g4cH0xmF8m7Wmgq80Zk/edit?usp=sharing&resourcekey=0-twH8Zo2kaaIC-vlvVag4yw",type:301},{source:"/go/go-router-v13-breaking-changes",destination:"https://docs.google.com/document/d/1FRdW_p29zH0I3KEMQKW_QMMN7owiQ5Wx-PUhhZpehSg/edit?usp=sharing",type:301},{source:"/go/go-router-v14-breaking-changes",destination:"https://docs.google.com/document/d/1Z6RYo7rGIdtryvQvAntekF53zoz4iy4XvIamBxRWa4Y/edit?usp=sharing&resourcekey=0-CH_yB7ur4gLvSuqPtB5bZA",type:301},{source:"/go/go-router-v15-breaking-changes",destination:"https://docs.google.com/document/d/1107edi31gPcr4rIbUBvkLqZJiP999ZLI7d85InLbmIw/edit?usp=sharing",type:301},{source:"/go/go-router-v16-breaking-changes",destination:"https://docs.google.com/document/d/1E4B5nMDEvsqQiCo-Ki9LohocLFC88X398-AiLXRQhwU/edit?usp=sharing",type:301},{source:"/go/go-router-v17-breaking-changes",destination:"https://docs.google.com/document/d/1bkTAHsTSWP6y1YkznEG1ATLZxBT8b2uufNNs6vcvge4/edit?usp=sharing",type:301},{source:"/go/go-router-v2-5-breaking-changes",destination:"https://docs.google.com/document/d/1MoEM3C6sDvMUuZYCxlYoMI2QJlkONu8i9G53uy5xk-M/edit",type:301},{source:"/go/go-router-v2-breaking-changes",destination:"https://docs.google.com/document/d/12iXx214phOag-XCetaGbSzziXGaHX82V-wMi_-8W04M/edit",type:301},{source:"/go/go-router-v3-breaking-changes",destination:"https://docs.google.com/document/d/1TZ8G_TZ6Dqcpz64qXxArGhtHKFECDEPZFEuxYwQjJz4/edit#",type:301},{source:"/go/go-router-v4-breaking-changes",destination:"https://docs.google.com/document/d/1T2LmzMj5HpD7hEexXL4Xz6vqoJD81bEGaa9NsV24faw/edit?usp=sharing&resourcekey=0-PuQbtDVl7ZabpJ2B9AHWUg",type:301},{source:"/go/go-router-v5-1-2-breaking-changes",destination:"https://docs.google.com/document/d/1HMUZA-lgeGFZ5JyU4g5jOFhbYAbk9ysfz9Ok1tGvqRw/edit?resourcekey=0-7otvjyBeefkQ9xQP9S2-9w#",type:301},{source:"/go/go-router-v5-breaking-changes",destination:"https://docs.google.com/document/d/10l22o4ml4Ss83UyzqUC8_xYOv_QjZEi80lJDNE4q7wM/edit?pli=1&resourcekey=0-U-BXBQzNfkk4v241Ow-vZg",type:301},{source:"/go/go-router-v6-breaking-changes",destination:"https://docs.google.com/document/d/1CMJwd5Moq_scvHf-trRldy9RW5MU7_Y8IB1aTrny-6s/edit",type:301},{source:"/go/go-router-v7-breaking-changes",destination:"https://docs.google.com/document/d/10Xbpifbs4E-zh6YE5akIO8raJq_m3FIXs6nUGdOspOg/edit?usp=sharing",type:301},{source:"/go/go-router-v8-breaking-changes",destination:"https://docs.google.com/document/d/1VCuB85D5kYxPR3qYOjVmw8boAGKb7k62heFyfFHTOvw/edit?usp=sharing",type:301},{source:"/go/go-router-v9-breaking-changes",destination:"https://docs.google.com/document/d/16plvWc9ablQsUs7w6bWDpTZ7PwMP4YUhV-qMQ3iljE0/edit?usp=sharing",type:301},{source:"/go/go-router-builder-v4-breaking-changes",destination:"https://docs.google.com/document/d/1nfwkcmW06ZJsnHr_CvIX-pZcO_5DRMnUb4R6ZAYP3Mo/edit?usp=sharing",type:301},{source:"/go/golden-workflow",destination:"https://docs.google.com/document/d/1MuIUz9pyE_bBZPbtMCj3pYgkdgG4s4Egh6FMknTngKw",type:301},{source:"/go/google-apis",destination:"/data-and-backend/google-apis?utm_source=go-link&utm_medium=referral&utm_campaign=go-google-apis",type:301},{source:"/go/google-sign-in-authn-authz-updates",destination:"https://docs.google.com/document/d/1m-VWG9L0o5GL2oiKWZf7bjyGbFykVYidd9HuML-IEl4/edit?usp=sharing",type:301},{source:"/go/google-testing-v2",destination:"https://docs.google.com/document/d/1Sg_CsGa3VxMNOXFKvoXEPNneD6OUuXIUsmFEjhluhDw",type:301},{source:"/go/google-testing-queue",destination:"https://docs.google.com/document/d/15gMCfOIUWlsRuLRMhMge-7odVHTzU8zibiVFDLdn3Pk/edit?usp=sharing",type:301},{source:"/go/google-maps-advanced-markers",destination:"https://docs.google.com/document/d/1HRyq_aFcYeSKDDyYetce_1Z9Q-GR9ONX_46JioAScQk/edit?usp=sharing",type:301},{source:"/go/google-maps-spm-versioning",destination:"https://docs.google.com/document/d/1g_GeFy4FnTHgUg-Kdmh5VOU8qOGaxGZ0J7cW75Gy8Uk/edit?usp=sharing",type:301},{source:"/go/gpu-texture-compression",destination:"https://docs.google.com/document/d/1SYVhd5L9Zwi5DpyzWiSkJnqhcw5tJV5qm6CR_xGrs6A/edit?usp=sharing",type:301},{source:"/go/handling-synchronous-keyboard-events",destination:"https://docs.google.com/document/d/1rWXSjkb2ZKv-cpg26lVK0aZi4cVeXJ8j7YmSJdq2TOM/edit",type:301},{source:"/go/headless-flutter-engine-with-dedicated-thread",destination:"https://docs.google.com/document/d/1Q8ItSkmGz9bGFfpBTEUSL4SoeHkL6H0yV7kqHy6uroY/edit",type:301},{source:"/go/hermetic-xcode-installation",destination:"https://docs.google.com/document/d/1EcXm4Woq48GR_ky07mEJka6NfV1vFBN2OHDEeGfPk34/edit?resourcekey=0-0Gjtt1I66mGJ8AwiCTlFNw",type:301},{source:"/go/hero-refactor",destination:"https://docs.google.com/document/d/1JZVqykFjhDXcJyj_Ep5gfTmF-Eu4pQXXNRcLCN04tls/edit?usp=sharing",type:301},{source:"/go/hero-use-cases",destination:"https://docs.google.com/document/d/1xCxKy_KtYK1dsqycsZyV3fOMJCxjZMPx87M-MoK-Tmc/edit?usp=sharing&resourcekey=0-kJYMNVh31SmrjEZ_xuZRPA",type:301},{source:"/go/hot-ui-early-prototype-demos",destination:"https://docs.google.com/document/d/1ZaHqKnON8-WEhke3Y6FpHeuB5BNlxDQj1cCYB1SoI_g",type:301},{source:"/go/i18n-user-guide",destination:"https://docs.google.com/document/d/10e0saTfAv32OZLRmONy866vnaw0I2jwL8zukykpgWBc/edit",type:301},{source:"/go/icu-message-parser",destination:"https://docs.google.com/document/d/1wj5rBbuz1bXM1lvt0s0d35F5JRtIPmYUs1UDk1G3HLc/edit?usp=sharing",type:301},{source:"/go/idle-gc-metrics",destination:"https://docs.google.com/document/d/1QjLTDr2cTsmS3DGIWdw9WSgqBMKJkFXD7Q8acziGIIA/edit?usp=sharing",type:301},{source:"/go/image-decoding-registry",destination:"https://docs.google.com/document/d/167qWrlaSAmJm5muqQ-iiJKZy6Q7ZlugIeXmraXava5Y/edit?resourcekey=0-mVrr_zBiSI2Qmd6vqae7Bw",type:301},{source:"/go/impeller-backend-desktop",destination:"https://docs.google.com/document/d/14ou6WEfFjyFwtYZ81oCfIVdUYeG3vqIjvZ16eD0dNPw",type:301},{source:"/go/impeller-dart",destination:"https://docs.google.com/document/d/1Sh1BAC5c_kkuMVreo7ymBzPoMzb7lamZRPsI7GBXv5M/edit?resourcekey=0-5w8u2V-LS41tCHeoE8bDTQ",type:301},{source:"/go/impeller-geometry",destination:"https://docs.google.com/document/d/1t-dzzi04nCdkIReoJp8ZyGNskqIip1TG3WhGEz7Osd8/edit?usp=sharing",type:301},{source:"/go/implicit-animations",destination:"https://docs.google.com/document/d/1-gUqKiHf6w_eck1rZqYjQk0MMPOIlYjZtYu1zjsDLPA/edit?usp=sharing",type:301},{source:"/go/infinite-scroll",destination:"https://docs.google.com/document/d/1TV2oF2iLIZtGd48336korxMTQrGizDAASAeZAeteMSc/edit?usp=sharing",type:301},{source:"/go/inheritedwidget-subscription",destination:"https://docs.google.com/document/d/14BhIyj52NFYuyrWXe8bHJTZp7I67iKNmtOQXHCNH5GQ/edit?usp=sharing",type:301},{source:"/go/inheritedwidget-workshop",destination:"https://dartpad.cn/workshops.html?webserver=https://dartpad-workshops-io2021.web.app/inherited_widget",type:301},{source:"/go/input-field-autofill",destination:"https://docs.google.com/document/d/1wYLsoc7NiHl2jFueB4Ros09E3nDCotdWVovDCFSMcAk/edit",type:301},{source:"/go/intrinsic-box",destination:"https://docs.google.com/document/d/1fTTEDEdH4i9mPXh7IiQ2w8TOwHYpGu7dSk1vFH2Hgow/edit",type:301},{source:"/go/introduce-disposable",destination:"https://docs.google.com/document/d/1cjylBOczGk70x-sn1iZYVNAfpPZdtGWsm_KzoNQX0jc/edit",type:301},{source:"/go/io22concurrency",destination:"https://github.com/goderbauer/io22concurrency",type:301},{source:"/go/ios-17-text-input",destination:"https://docs.google.com/document/d/1sM3HMv-SQin39yX1aPUU7vtGv7Hcef1Quc3QhRXBl6A/edit?resourcekey=0-SFYD8vmOIkXiXCZvB1Wlcw",type:301},{source:"/go/ios-26-keyboard-bleed",destination:"https://docs.google.com/document/d/1WU1XhnVQYIgdab8dAqpVjLLviK02BeOmjDjektpYHRk/edit?usp=sharing",type:301},{source:"/go/ios-autocorrection-highlight-support",destination:"https://docs.google.com/document/d/18ZO7ThKu2wwCofGOKZSInPsq93IzkQTRn9eiyskeh7I/edit",type:301},{source:"/go/ios-camera-plugin-thread-model",destination:"https://docs.google.com/document/d/1Znjp-BduXIb1Ix3JOE1YKyJi1Z0d6rB-2q6Lt7j8xSo/edit",type:301},{source:"/go/ios-keyboard-calculating-inset",destination:"https://docs.google.com/document/d/1pb1oqTanWSxwM8nAdm_-_ero3P6MM05vR1JjcdeFkiM/edit?usp=sharing&resourcekey=0-syHrzFB8A4zywVaHBicZNg",type:301},{source:"/go/ios-platform-view-engine-overview",destination:"https://docs.google.com/document/d/1G6RNt_5y20g2SfI_V25c02PAXHGH9PgfGnk5dOmBdVI/",type:301},{source:"/go/ios-platform-view-focus",destination:"https://docs.google.com/document/d/1GG8VfYeuVtTQHiMWQXbrSG5HEUorzqU8IGbNySVJ-bY",type:301},{source:"/go/ios-platform-view-hittest-blocking",destination:"https://docs.google.com/document/d/1jVBK6fqLdN7qA8jGM8PryQeUYMYBNvP-808w4K6KBGw/edit?usp=sharing&resourcekey=0-D8jiTjjIZjFSiA20osvrHw",type:301},{source:"/go/ios-platform-view-mask-hardware-rendering",destination:"https://docs.google.com/document/d/1TqG_N4GK_qctuk73Gk3zOdAiILUrwMqxoCMgroK_AeA/edit?resourcekey=0-jUiidfzIS642ngG2w9vSUA&tab=t.0",type:301},{source:"/go/ios-platform-view-touch-gesture-blocking",destination:"https://docs.google.com/document/d/1ag4drAdJsR7y-rQZkqJWc6tOQ4qCbflQSGyoxsSC6MM/edit?tab=t.0",type:301},{source:"/go/ios-platformview-backdrop-filter-blur",destination:"https://docs.google.com/document/d/1V7Jc_RGaknrBBPPBBKB8lT7f3PKhYr8sin35MSMFAf4/edit?usp=sharing",type:301},{source:"/go/ios-plugins-swift-migration",destination:"https://docs.google.com/document/d/1XsaulkJA6_ZSpM7chkQLhQY25sQqhEMiqHMYzw8H85o/edit?resourcekey=0-_cUjF1c0iBvRLKfV-3gK5A",type:301},{source:"/go/ios-pull-to-refresh",destination:"https://docs.google.com/document/d/1oUgNd3fsJ1QVuEmA6ENBT8vq3o6QKCRUPGCB6q91VgI/edit",type:301},{source:"/go/ios-scribble",destination:"https://docs.google.com/document/d/1mjQbsSRQnHuAgMNdouaSgTS-Xv-w57fdKfOUUafWpRo",type:301},{source:"/go/ios-secure-paste",destination:"https://docs.google.com/document/d/16-8kn58h_oD902e7vPSh6W20aHRBJKyNOdSe5rbAe_g/edit?resourcekey=0-gVdJ3fbOybV70ZKeHU7fkQ",type:301},{source:"/go/ios-spell-check",destination:"https://docs.google.com/document/d/10Lvkz802QpzAGFi3Q9WVTMVUV-SPJyG3_xs8XfxG59Q/edit?usp=sharing",type:301},{source:"/go/ios-storekit2",destination:"https://docs.google.com/document/d/1YBlb6J6rjgdtfnHYrQLJ4i_FLpboh41UnFoEF8TfyE0/edit?usp=sharing&resourcekey=0-3-p9q6ludxmTw6u3uMehgA",type:301},{source:"/go/ios-style-blur-support",destination:"https://docs.google.com/document/d/1ygKfRH-hjKwcX4DbXaIa4Ra4q0NpQtrSZdH4jA7vg5g/edit?usp=sharing",type:301},{source:"/go/ios-switch-controll-scrolling",destination:"https://docs.google.com/document/d/1CZ2CRXihPQ1hBUXWODpyPVJ_2Yc0es6tkXrJSnpDajA",type:301},{source:"/go/ios-ui-scene-lifecycle-migration",destination:"https://docs.google.com/document/d/15_m14WgmxVsDqC10icsP8-GoiPAzfJPfsBGLpgFl2DQ/edit?usp=sharing",type:301},{source:"/go/ios-wireless-device-discovery",destination:"https://docs.google.com/document/d/1AY4zhW9C3Q9Ml_YfjM00um1mwQxXblLU6lHrteBdiF4/edit?usp=sharing&resourcekey=0-LOZQ6YinTH1xuDd19vcpOw",type:301},{source:"/go/ios16-video-player-blank-screen",destination:"https://docs.google.com/document/d/1zelzxGf6kUEvtF6hbFRExs5UOz8ODtUCa7ogiouxbpo/edit",type:301},{source:"/go/issue-priority-standards",destination:"https://docs.google.com/document/d/1x-BpbFHUKndv2ojd6LmS-At-pxd6SrIbgfYUepjP7D4/",type:301},{source:"/go/issue-triage-changes",destination:"https://docs.google.com/document/d/1KJVPMxzfFaL_gIB6Z3oNRTBKA-NP25YpM8xi3xUKbBY",type:301},{source:"/go/job",destination:"https://forms.gle/omPUhztq27KnH1LG8",type:301},{source:"/go/key-based-mouse-tracker-annotation",destination:"https://docs.google.com/document/d/18DCRSX4-KjJIrnru_Cv9cJjzQmUWM95r8n6uvbS45-E/edit",type:301},{source:"/go/known-values-annotation",destination:"https://docs.google.com/document/d/1WMxm3_E3w58339Wvjt-j5WaqTALNSwSePQs3p0fxW64/edit",type:301},{source:"/go/layered-material-widgets",destination:"https://docs.google.com/document/d/132QrLvsSI3KenJZfCHufXpiRvPeqt3cUMk5DjJa6HRs/edit?usp=sharing&resourcekey=0-LrvJWEP4mqc_P3wJJt2ttw",type:301},{source:"/go/layout-builder-optimization",destination:"https://docs.google.com/document/d/1H8Z48vZAemV0Kw0It65JMoGhqVlDLQErkKZN8-r9pdU",type:301},{source:"/go/leak-tracker-make-bots-blocking",destination:"https://docs.google.com/document/d/1O1ojL-E0DsinDvrmR2NIGh9FUo4YeCx7H6rmmJRY_Sc/edit",type:301},{source:"/go/leak-tracker-high-level-design",destination:"https://docs.google.com/document/d/158JfU9JKRqfhRPF5C0ceTuOAIWPber_MYftRiuTzlVE/edit?resourcekey=0-SFa6mZ69muVqA5eXi30wIQ",type:301},{source:"/go/legacy-material",destination:"https://docs.google.com/document/d/1REsg982YG2MlspsMOiNLpu8OIWkyehRRQUXHMU3tAAM/edit?usp=sharing",type:301},{source:"/go/lifecycle-debug-flag",destination:"https://docs.google.com/document/d/1WowGJhAMzYvwoyYLOzwjj1Jb0lwIjUpNfqvKjFWQZIM/edit",type:301},{source:"/go/link-widget",destination:"https://docs.google.com/document/d/1HMadUQ2g7BRoCYmUvUYPAALU520fFv9PoPDkoz0wjAc",type:301},{source:"/go/link-widget-2",destination:"https://docs.google.com/document/d/1-BJ4Rp6-glA9S__o97xDiNdd_lbuj7y6e394VE-5y4U",type:301},{source:"/go/lints-migration",destination:"/release/breaking-changes/flutter-lints-package",type:301},{source:"/go/localizing-datetime",destination:"https://docs.google.com/document/d/1QR3qLXWdroTVLbnAQ8mq-Ia6tsZ8NY3lmi7gySQAstU/edit",type:301},{source:"/go/mac-voiceover-text-editing",destination:"https://docs.google.com/document/d/19YP1o4Shba6NzQTBH_EWC8y1GUhKAbo9dan4digFbZs",type:301},{source:"/go/macos-intel-deprecation",destination:"https://docs.google.com/document/d/1ty3js_Eg2sNIbDuyYS_aV7h4jYdx1hEpX_mV135gO4s/edit?usp=sharing",type:301},{source:"/go/macros-for-leak-tracker",destination:"https://docs.google.com/document/d/1ireWmX4J5Jc6oDO1PmAXPlLdiAlCHvTz8SVC_Sg9KM8/edit?usp=sharing&resourcekey=0-yODb_SAStMgMefYpQeX8uQ",type:301},{source:"/go/make-dropdownmenuitem-value-param-required",destination:"https://docs.google.com/document/d/1x5jsgnLxI3wSDwXRzO0n5hdXKn2a_XTJcsXdjFZLX44/edit",type:301},{source:"/go/match-xcode-deployment-range",destination:"https://docs.google.com/document/d/1Y1WpbQPMOL3GvL8ow_OTD_-ENG3uuhS46CGRhLt12I8/edit?usp=sharing",type:301},{source:"/go/material-banner-updates",destination:"https://docs.google.com/document/d/12Jet1gW2B_QFxig5B4K7f_lrpGhkbjR3LYpsKd4ZtJs/edit?usp=sharing&resourcekey=0-CfFoZ-0oqWPtz2WH0Jj0aw",type:301},{source:"/go/material-button-migration-guide",destination:"https://docs.google.com/document/d/1yohSuYrvyya5V1hB6j9pJskavCdVq9sVeTqSoEPsWH0",type:301},{source:"/go/material-button-system-updates",destination:"https://docs.google.com/document/d/10Fbn59hiHkppqJ6y_1Rjwl7klN-OvJXQU3SFEqicpME/edit",type:301},{source:"/go/material-cupertino-framework-migration",destination:"https://docs.google.com/document/d/1LfHjsg6-WPtpfxxKwYBCokRdN8O92AB0xDk7TUR8JmQ/edit",type:301},{source:"/go/material-date-picker-redesign",destination:"https://docs.google.com/document/d/1AGKjBvO7EL2PuJGcwaa2PoCusjtTAvpYO7i_3A2vVpc/edit",type:301},{source:"/go/material-symbols",destination:"https://docs.google.com/document/d/1UHRKDl8-lzl_hW_K2AHnpMwvdPo0vGPbDI7mqACWXJY/edit?usp=sharing",type:301},{source:"/go/material-theme-system-updates",destination:"https://docs.google.com/document/d/1kzIOQN4QYfVsc5lMZgy_A-FWGXBAJBMySGqZqsJytcE/edit",type:301},{source:"/go/max-length-enforcement",destination:"https://docs.google.com/document/d/1S900lQaTPOsePnIeE7o3-Ia8f39VZaSv0JnjNyBfCvU",type:301},{source:"/go/medium-sized-code-samples",destination:"https://docs.google.com/document/d/1-jjYru2ljRSRSY4hn4qwLj9oQj8UiqrDOgY10-FE2tY/edit?usp=sharing",type:301},{source:"/go/migrate-flutter-wiki",destination:"https://docs.google.com/document/d/1naONKJd-eqPj8zEVfHfjGa5TCZNyJErBY4ca1gjSCq4/edit?usp=sharing",type:301},{source:"/go/migrate-flutter-wiki-spreadsheet",destination:"https://docs.google.com/spreadsheets/d/1x65189ZBdNiLRygpUYoU08pwvXD4M-Z157c6pm8deGI/edit?usp=sharing",type:301},{source:"/go/migrating-to-vertical-alignment",destination:"https://docs.google.com/document/d/1vi6d6On6EXN82Q8KmXSLbWNnsnm9YjWtTWhSyjPF59Q/edit?usp=sharing",type:301},{source:"/go/mixin-modifier",destination:"https://docs.google.com/document/d/1la2S1uJrNAawc1yja8hrSxFZJ0cFHnYopmaBYDLwMjg/edit?usp=sharing&resourcekey=0-br1LWMlYC63Q30VGiPtAHg",type:301},{source:"/go/mouse-tracker-no-longer-attaches-annotations",destination:"https://docs.google.com/document/d/1YuOcepqZjNknAMz1si2m-jAiLT4MP28XEzBcKLHnNiA/edit",type:301},{source:"/go/move-flutter-agnostic-types",destination:"https://docs.google.com/document/d/1qQokfeExIx3E7X_2ogFfZ4U5viBQflwVSKtlazPjgOY/edit?usp=sharing&resourcekey=0-XFum7OfSG2Nkvvq8w5QxdA",type:301},{source:"/go/move-mouse-tracker-to-rendering",destination:"https://docs.google.com/document/d/1dYNOTZ4kdq6ndNHopjUlrGlGBw3W-3jMbnoNJouIYtE/edit",type:301},{source:"/go/multi-view-embedder-apis",destination:"https://docs.google.com/document/d/1kegGJ235y1778-vzyyv90MgSHmYQcROTupMuLtEDBq0/edit?usp=sharing",type:301},{source:"/go/multi-view-on-android-ios",destination:"https://docs.google.com/document/d/1B0YT06IRIv0mnxOkXbEgA6lG5LGuZTtI5H6l1XAkLVY/edit?usp=sharing",type:301},{source:"/go/multi-view-on-android-ios-runner-api",destination:"https://docs.google.com/document/d/1u0WSfbH5oKyATIXsVK0OoyjOMSYXjI2xwnZ0I6QeoLE/edit?usp=sharing",type:301},{source:"/go/multi-view-pipeline-and-rasterizer",destination:"https://docs.google.com/document/d/1xoD02qOxt2OSe3eN1ARsBUUWNFawdrxC2JXUURx7218/edit?usp=sharing",type:301},{source:"/go/multi-view-sync-embedder-apis",destination:"https://docs.google.com/document/d/14z-e-x6M3P53ZMD6qBh4UaJ3nJdG_VdMNqGKERv31hw/edit?usp=sharing",type:301},{source:"/go/multi-view-sync-over-async",destination:"https://docs.google.com/document/d/14z-e-x6M3P53ZMD6qBh4UaJ3nJdG_VdMNqGKERv31hw/edit?usp=sharing",type:301},{source:"/go/multi-window-single-isolate",destination:"https://docs.google.com/document/d/1Wdqs79TY3b1VkOZMDmt12psg5AhO-q9k5-Uv28Snr8M/edit?resourcekey=0-qvOf6jo8bR9W4ozLrbLMcQ",type:301},{source:"/go/multi-window-status",destination:"https://docs.google.com/document/d/13E27tD8_9f6lDgwg3MpGNTV8XIRCZH3ByI-t9kI9IUM/edit?usp=sharing",type:301},{source:"/go/multi-window-api",destination:"https://docs.google.com/document/d/1eQG-IS7r4_S9_h50MY_hSGwUVtgSTRSLzu7MLzPNd2Y/edit",type:301},{source:"/go/multi-window-api-ffi",destination:"https://docs.google.com/document/d/1UEaxd_aIlsPMzkfB6oyeYaKzwHadrWGyMzOS33oSbK4/edit",type:301},{source:"/go/multi-window-experimental-apis",destination:"https://docs.google.com/document/d/1Muakcdx8Ktg72G5GiieRP-9swxl_5Uum1oEI89aBLSM/edit?usp=sharing",type:301},{source:"/go/multi-window-overlay",destination:"https://docs.google.com/document/d/1Z8R9Kd6Z1P9R5N8T5YpY89rraKmhSYXoJ284rRM-TF4/edit",type:301},{source:"/go/multiple-applications",destination:"https://docs.google.com/document/d/1alrr7qimNDazmQx5D80BSHh62V2OINO4UQ5N3HcPnmo/edit?resourcekey=0-wPs1Go9AiKR-yG0-xStuKw",type:301},{source:"/go/multiple-engines",destination:"https://docs.google.com/document/d/1NwiZPWHd1te46eP2GWwIezDV9CdMQkODAMuF5kWdtLw",type:301},{source:"/go/multiple-flutters",destination:"https://docs.google.com/document/d/1fdKRufqUzQvERcqNIUSq-GdabXc4k8VIsClzRElJ6KY",type:301},{source:"/go/multiple-views",destination:"https://docs.google.com/document/d/1Z7Qrb08dOnfB8IxPgsyujVn4MsDcYPUUku9CeF70_S0/edit?usp=sharing",type:301},{source:"/go/navigator-with-router",destination:"https://docs.google.com/document/d/1Q0jx0l4-xymph9O6zLaOY4d_f7YFpNWX_eGbzYxr9wY/edit",type:301},{source:"/go/nshc",destination:"https://docs.google.com/document/d/1uwHQ3ZEGN2cH6bFwa3CCXTTXCeDfOWw-kUa_B6oTMuA/edit",type:301},{source:"/go/null-safety-workshop",destination:"https://dartpad.cn/workshops.html?webserver=https://dartpad-workshops-io2021.web.app/null_safety_workshop",type:301},{source:"/go/nullable-cupertinothemedata-brightness",destination:"https://docs.google.com/document/d/1qivq0CdkWGst5LU5iTLFUe_LTfLY84679-NxWiDgJXg/edit",type:301},{source:"/go/ondirtycallbacks",destination:"https://docs.google.com/document/d/1Vk_QWC92fFGxx2oIrIjkCL0ZZFHxmrprlLedyQsnkus/edit?usp=sharing",type:301},{source:"/go/onmaploaded",destination:"https://docs.google.com/document/d/1ogwmAQOjbX6UoHnsQ1sQG2P0LRU2KRBED64jnjtBpIQ/edit?usp=sharing",type:301},{source:"/go/opengl-on-ios",destination:"https://docs.google.com/document/d/1kvrb6HeTRN4noAKO82o6x-Ii61PW-BQ-8s9YNtLgosM",type:301},{source:"/go/optimized-platform-view-layers",destination:"https://docs.google.com/document/d/1YHwVz7-F03psEzHxByGka_lIFaDV5K90BJMbNxQeK4k/edit?resourcekey=0-n4_VcUnMU-99sjJ6C1_Ycw#",type:301},{source:"/go/os-adaptive-shortcut-activator",destination:"https://docs.google.com/document/d/11NWj13MSDw1XQg4MpYIeqzcCFGuzQ_Cz7tYXW7fqzPY/edit?usp=sharing",type:301},{source:"/go/outline-input-border-padding-fix",destination:"https://docs.google.com/document/d/1QBM5oM9qPWVeFSPSqpXOFbdXV9dH9A9ABKsNMs1J2XU/edit?usp=sharing",type:301},{source:"/go/overlay-semantics",destination:"https://docs.google.com/document/d/1XfHWGTmt_w4N7r3H1ag53MiYZME0VKseT3D6XaOCZKM/edit?usp=sharing",type:301},{source:"/go/overridable-text-actions",destination:"https://docs.google.com/document/d/11vmEZTjB4_E4el1IjTo2VBI2d_fR7tjQWeCajsQc-q4/edit?usp=sharing",type:301},{source:"/go/package-release-strategy",destination:"https://docs.google.com/document/d/18kjoP-4LAXEllugVOQRg6vZELyD6MuxlKilLD4lFxSY/edit?usp=sharing",type:301},{source:"/go/packaged-ai-assets",destination:"https://docs.google.com/document/d/1k_X-Sp4GQyZP6k9lvZ1Itj0GvzQZuWl3iKzi5AIa69Q/edit?usp=sharing",type:301},{source:"/go/performance-android-orientation-changes",destination:"https://docs.google.com/document/d/1L7NMG8YfWXoAuCFPv9oX11M1FEWXKbyaWc03mOmXJGc/edit?usp=sharing",type:301},{source:"/go/performance-best-practices",destination:"https://docs.google.com/document/d/16bd3HtkuvzAk0uizDGTT3aNtjI8Mfr0f6C3ZVrYYqvI",type:301},{source:"/go/permissible-slider-interaction",destination:"https://docs.google.com/document/d/151iaqbK-rZSRI34NdkvfIk4RkzOpAevoJ87TwiXfTpM/edit?usp=sharing&resourcekey=0-o0Gx6nrgl-fpw7_zUdMaQA",type:301},{source:"/go/per-pr-release",destination:"https://docs.google.com/document/d/1wV2CuEKTxVgrVDghUrpipggqOt2D0TXARXGiZAFYUn8/edit?usp=sharing",type:301},{source:"/go/picture-lifecycle",destination:"https://docs.google.com/document/d/1aTBj38k6NSVsYRwySEBItlqxdQbjzurjmHsXAr3yGiI/edit?usp=sharing&resourcekey=0-TbKDu4BVInqphkzAlasBnw",type:301},{source:"/go/pigeon-native-interop",destination:"https://docs.google.com/document/d/17qlMtoBdsjdPEv69u58TV4v2P-cJ5zPv7ZFMmIU4BZs/edit?usp=sharing",type:301},{source:"/go/platform-api-breakages",destination:"https://docs.google.com/document/d/1OxDsf_eot7TlsRn57z-1_dGbvuqnMxO7QEGIAmOCZtA/edit?usp=sharing",type:301},{source:"/go/platform-based-key-events",destination:"https://docs.google.com/document/d/1FDuxxEh810XpY561SgeiyUR0gU2eVz5kRpCFI55ibec/edit",type:301},{source:"/go/platform-channels-in-federated-plugins",destination:"https://docs.google.com/document/d/1BSrDA_FjLU-3T0H774RocJ4IYyc0ytMl937rAimGJdg/edit?usp=sharing",type:301},{source:"/go/platform-interface-breaking-changes",destination:"https://docs.google.com/document/d/1LD7QjmzJZLCopUrFAAE98wOUQpjmguyGTN2wd_89Srs/edit#heading=h.xabf9lffxrkb",type:301},{source:"/go/platinum-tests",destination:"https://docs.google.com/document/d/1yqGEMsLp6dstSlq56E2BqNP2PinKB9Z7WXC3pGjcD7Y/edit?usp=sharing",type:301},{source:"/go/plugin-binding-review",destination:"https://docs.google.com/document/d/1-9Si_ocFYh-Wa1qKV4PV2ocywKDYdiR_1yO3twPvrfM",type:301},{source:"/go/plugin-platforms",destination:"/packages-and-plugins/developing-packages#plugin-platforms",type:301},{source:"/go/plugin-shared-ios-macos",destination:"https://docs.google.com/document/d/1JdgBrMXV0a6fnVoooILNTQB8dNCvLloT4D4TBkECQ6c/edit?usp=sharing&resourcekey=0-iPL3CzwOjUquabkMiucaHA",type:301},{source:"/go/plugin-support-for-custom-embeddings",destination:"https://docs.google.com/document/d/1AJTHdC20JhD3viR4JWTghagIztqL5jg_R9NFQmnwAMw/edit?usp=sharing&resourcekey=0-qAECjzHKB5tM47azrVnH1w",type:301},{source:"/go/plugins-list-migration",destination:"https://docs.google.com/document/d/1itYyHax0bzL3-hRtQd1zRPqJfOrLYih1fW0nPDJDytc/edit",type:301},{source:"/go/plugins-team",destination:"https://docs.google.com/forms/d/e/1FAIpQLSfpPqJYuL_RzLaTCjrWYw73Zrrei3YiU8B5eTrDBh4fuGhbXw/viewform?usp=sf_link",type:301},{source:"/go/post-decoupling-breaking-changes",destination:"https://docs.google.com/document/d/1SMxhPDWLgos9xGPj5NUzTVX7J6sPGtW9D8EDQNF30G4/edit?pli=1&tab=t.0",type:301},{source:"/go/profile-and-release-mode-for-custom-devices",destination:"https://docs.google.com/document/d/1jcMyJvsWLizYOIJAdyosLSW-Io0-E_MGsU_uL_Q4Wt8/edit?usp=sharing",type:301},{source:"/go/programmatic-sheet",destination:"https://docs.google.com/document/d/15A3q1QrcvEU82uG4heTCKV230depmaJZTIP5rEz7V8g/edit?usp=sharing&resourcekey=0-q-TH-9-LVmygnp6Ku4xKIg",type:301},{source:"/go/pub-automated-publishing",destination:"https://docs.google.com/document/d/1LSYVjDdgGNCc7p5Y2_hu8UA_Ms9MgZs3Jm974D1J344",type:301},{source:"/go/pub-workspace",destination:"https://docs.google.com/document/d/1UEEAGdWIgVf0X7o8WPQCPmL4LSzaGCfJTM0pURoDLfE/edit?usp=sharing&resourcekey=0-c5CMaOoc_pg3ZwJKMAM0og",type:301},{source:"/go/publish-on-homebrew",destination:"https://docs.google.com/document/d/1dk82qavQxT633LAonAM2xsqirWBmsqoHC4caJvYE584/edit?usp=sharing",type:301},{source:"/go/pull-request-revert-api",destination:"https://docs.google.com/document/d/1mVVetlCjv9PM5gtg57nipDFd5TvWsd24rXPWS0FzVvE/edit?usp=sharing&resourcekey=0-McwG6wn0s6YQ7qxHffkcdw",type:301},{source:"/go/pull-request-revert-api-v2",destination:"https://docs.google.com/document/d/1lfPVtrq_6YB-I6bEHEXRPeJCE32EvKxx-nSYmLpJIYI/edit?usp=sharing&resourcekey=0-BZghqoHCZBXuoQ2alTyRiw",type:301},{source:"/go/rasterizer-pipeline-improvements",destination:"https://docs.google.com/document/d/1Hg5Wfx8JTgYmLboxFRr5DDd9EfdrdEuMbNGGMvDjd6E/edit?usp=sharing",type:301},{source:"/go/reduce-ci-tests",destination:"https://docs.google.com/document/d/1-HRz-dXoIKjEgbCs9CF2-TO_3wSFK-V4ispXg-IoarY/edit?usp=sharing",type:301},{source:"/go/reference-plugin",destination:"https://docs.google.com/document/d/1NJFbRMVxVL9YS_FcWi7W08DsBr_eRAJtQI9FQkk9MXk/edit",type:301},{source:"/go/registered-actions",destination:"https://docs.google.com/document/d/1RrAWQ-rq-XcrjJx4Jegn8NdJKNHfLem6MkAJrI8Q_1w/edit?usp=sharing",type:301},{source:"/go/remove-fab-accent-theme-dependency",destination:"https://docs.google.com/document/d/1kmXWerkykXXjMfibsc9O105NocBGH3dGW8UL2VH5Q48/edit",type:301},{source:"/go/remove-include-flutter-groovy",destination:"https://docs.google.com/document/d/1OulURfRSWgJnnFA_cSup4ev7wrJwnZ7Siao_FGbLN9I",type:301},{source:"/go/reorderable-list-view-update",destination:"https://docs.google.com/document/d/1JzNtMQ-jnPnSHEBoi6IO0x2qMMylwhvRslEDcmqiwSs",type:301},{source:"/go/replace-block-semantics",destination:"https://docs.google.com/document/d/1niJnShCR3-PIMYo1a9lWdVySBqr_wmXYPvBXntvcc0c/edit",type:301},{source:"/go/respecting-tabcontroller-animateto-duration",destination:"https://docs.google.com/document/d/1wzSzUYstDM-Kg5kwskyXcEUX7QTb-lBOso7Z5ebrCTk/edit",type:301},{source:"/go/restoring-anonymous-routes",destination:"https://docs.google.com/document/d/1vnjDruoiDz0eEd4eVzg3IS6W_LRaFxNSlKWtU6iXp2M/edit",type:301},{source:"/go/rfc-32-bit-ios-support",destination:"https://docs.google.com/document/d/1Xz8B2w42ZGmrSdvQHo6LVLhiSZBIxnHxZxoZ-8oyRUc/edit",type:301},{source:"/go/rfc-32-bit-ios-unsupported",destination:"https://docs.google.com/document/d/1cc5EOsuTlbf4dTDTwmkD3aKjS8XEbVCIqi9BFct9XHM/edit?resourcekey=0-Iv0gXDx7nSDCe3YDfxDKqw",type:301},{source:"/go/rfc-android-j-deprecation",destination:"https://docs.google.com/document/d/1N06Pm1x19AIWorENk6OdmY5T8kMzPJUOZs8aL9VccG4/edit",type:301},{source:"/go/rfc-android-k-deprecation",destination:"https://docs.google.com/document/d/1gQGvMk2ydxieivDjO8zqM7DdwOBybKVgoUqZUOCuTo0/edit?usp=sharing&resourcekey=0-ew5kIQr2FPVp7qyydtBQeg",type:301},{source:"/go/rfc-ios8-deprecation",destination:"https://docs.google.com/document/d/1HtzJLUBnvi-VjcG3XEjwVHQGWeOzlrA77ozp9TvCWVE/edit",type:301},{source:"/go/roadmap",destination:"https://github.com/flutter/flutter/blob/main/docs/roadmap/Roadmap.md",type:301},{source:"/go/router-and-widgetsapp-integration",destination:"https://docs.google.com/document/d/1QodTFmwVr1yk8dyQvoqkeILxvm92oikB1bVhHTtp6R4/edit",type:301},{source:"/go/router-api-improvement",destination:"https://docs.google.com/document/d/1kbUPagtDl30jqYAq-mDMdd-ftHm3q9AMq55ufZCo9lE/edit?usp=sharing&resourcekey=0-JBqYh_UD3h9OSA8NS5OO4g",type:301},{source:"/go/routing-table-extraction",destination:"https://docs.google.com/document/d/1Oy7GR0Wo9ETctNMHK5oOjHJZJ3cwCFIcRswLYgE0O0E/edit?usp=sharing",type:301},{source:"/go/scaffold-messenger",destination:"https://docs.google.com/document/d/1TCH0T-X42z96lAcSkFttHAQMJ0MsvMojDKa6F4IQI3Y/edit?usp=sharing",type:301},{source:"/go/scalable-flutter-infrastructure",destination:"https://docs.google.com/document/d/19GEUwAwJbNI-gO9ziV_oDESB28E_Pqppwx8ku9jdEqY",type:301},{source:"/go/scale-selection-handles-ios-rich-text",destination:"https://docs.google.com/document/d/1XuvdYUzZQAxCLYT2H1DNtOi1s6fGmFE-cgmweaijfe4/edit?usp=sharing",type:301},{source:"/go/scrollable-alert-dialog",destination:"https://docs.google.com/document/d/1qtVfjoKXE8BtkNbraKk9IzfRcks5btkKcyE4iGVwkbg/edit",type:301},{source:"/go/sdk-per-platform-installers",destination:"https://docs.google.com/document/d/1VooN2bddQ52Z2B4qYi1Lp20PGhyYDr1AKaXwo9e7PCw",type:301},{source:"/go/semantics-roles",destination:"https://docs.google.com/document/d/1VRagJfHEbehVPa023xGUcFTqe5LgYGU2wYBmnNkwVmA/edit?usp=sharing",type:301},{source:"/go/semantics-role-system",destination:"https://docs.google.com/document/d/1WOEraK9VIh9dzpJ3mrXgenzfbpRxeISNAdgH8Sh80a4/edit?usp=sharing",type:301},{source:"/go/sfsymbols",destination:"https://docs.google.com/document/d/18V4ohqwp7fblJmhy7l9vVEPP1FGG4xXUorByjRHA19s/edit?usp=sharing&resourcekey=0-IVkjSy7jbMZ5FHPH_9yn9A",type:301},{source:"/go/shaders",destination:"https://docs.google.com/document/d/1z9K5LernwQ0LVAzfbAMW6ITx63QRdRsoax1NLYEfm4Y/edit",type:301},{source:"/go/sharding-mac-ios-builders",destination:"https://docs.google.com/document/d/1zLafqoFhKRMChUDGnnhzabnmhE2Vl1AWsrJzF8OWAGk/edit?usp=sharing",type:301},{source:"/go/simple-flutter-tool-memory-benchmarks",destination:"https://docs.google.com/document/d/1vlARGxdABMeZoj4HF0p075-81q7G9gv_GnDYgoF7e3I",type:301},{source:"/go/sixty-fps",destination:"https://docs.google.com/document/d/1FuNcBvAPghUyjeqQCOYxSt6lGDAQ1YxsNlOvrUx0Gko/edit",type:301},{source:"/go/slider-v2",destination:"https://docs.google.com/document/d/1NCuRe-TUp8u6-Yzx_wrXZcqAwv5NP8hEJwUYSxVECwU/edit",type:301},{source:"/go/sliver-flex-and-friends",destination:"https://docs.google.com/document/d/1W4_5oD5z7JHhUjuQYwS_NJRAv27Ih7IazcMm739O5JU/edit",type:301},{source:"/go/sliver-workshop",destination:"https://dartpad.cn/workshops.html?webserver=https://dartpad-workshops-io2021.web.app/getting_started_with_slivers",type:301},{source:"/go/smoothing-discrete-scroll-inputs",destination:"https://docs.google.com/document/d/136wxl8He3PF2UMOT51lPfeqKE2TWGQuQ1u1b-ZDgErM/edit?usp=sharing",type:301},{source:"/go/soft-hyphens",destination:"https://docs.google.com/document/d/1w_d53wb-RMuwXmXIPq67JrZYG97XF1mDaKEoKBDt8-E/edit?usp=sharing",type:301},{source:"/go/squircle-web",destination:"https://docs.google.com/document/d/1r5BDa0GBUpq6tAg7zqcaGDPMGhjvIIsZKB7c9gpYuzo/edit?usp=sharing",type:301},{source:"/go/state-restoration-design",destination:"https://docs.google.com/document/d/1KIiq5CdqnSXxQXbZIDy2Ukc-JHFyLak1JR8e2cm3eO4/edit",type:301},{source:"/go/stateful-macro",destination:"https://docs.google.com/document/d/1TMVFn2jXw705px7bUggk8vTvpLrUjxEG9mzb-cSqZuo/edit?usp=sharing&resourcekey=0-0s5mvWGH3OcW8GN-Rmr36A",type:301},{source:"/go/static-tooling-in-devtools",destination:"https://docs.google.com/document/d/1i6ISzzSKKDiiVftTnkCCvdgXEjK2eqYlPjCOKTjnvx8/edit?resourcekey=0-uyAiZEjFplyibsAkDAqKJw#",type:301},{source:"/go/storekit-2",destination:"https://docs.google.com/document/d/1x9t0T0pESDtz4Yc3jvIhfrvg7HM93AQcWlHQ4N6HNxc/edit?usp=sharing&resourcekey=0-ufh9Ko-eUOaX53yOEVUGDg",type:301},{source:"/go/strategy-2022",destination:"https://docs.google.com/document/d/e/2PACX-1vTI9X2XHN_IY8wDO4epQSD1CkRT8WDxf2CEExp5Ef4Id206UOMopkYqU73FvAnnYG6NAecNSDo9TaEO/pub",type:301},{source:"/go/strategy-2023",destination:"https://docs.google.com/document/d/e/2PACX-1vRknZ4Jkc-pWSMsDDyKwMrry7k2BSL_I94JCCQrg8FiHuy4fcypkgIVFbQVKPmzDQHfd20uZf2rFiXP/pub",type:301},{source:"/go/string-annotation",destination:"https://docs.google.com/document/d/18NRf-ziYvPCLr2xFoUqfRtanfZysrUvLAUz-BM_D2Ac",type:301},{source:"/go/studio-rasterization-context-for-multi-view",destination:"https://docs.google.com/document/d/1Eqb8xeoRKpLq2OVkJX_ux3azVLGJgJcaY5uSWzqdc_4/edit",type:301},{source:"/go/subpixel-antialiasing",destination:"https://docs.google.com/document/d/1yEycgo5ivZ_lu2MAnMBLreZvROFdamy9-9q-QvMvL9U/edit?usp=sharing",type:301},{source:"/go/subresource-integrity",destination:"https://docs.google.com/document/d/1bzmkJefUqHNsEcHnGdqBKqRKhHifiOqmryDMJfcAGn0/edit",type:301},{source:"/go/supporting-dart-callbacks",destination:"https://docs.google.com/document/d/1k7OimxbxXzdv3U7-TfB88yG5hIScN3TH6Jcvdcl4izM/edit",type:301},{source:"/go/swift-package-manager-plugins",destination:"https://docs.google.com/document/d/10S7anpgWdJ0wNCgsse8MvHY2PShrr9PeuufwYHi5v6U/edit",type:301},{source:"/go/swift-package-manager-plugins-v2",destination:"https://docs.google.com/document/d/1oUvM5e2a3QrKAk9pTPExPp3my4FD4lYz9Z-EXsUGuHI/edit?usp=sharing&resourcekey=0-Vu8vKukw0Dqqv7pW5aIxKQ",type:301},{source:"/go/swift-package-manager-plugins-v3",destination:"https://docs.google.com/document/d/1aoa-t6zZBc6TosCa8N41w8aA8O4Z5yqdV4DvSRjWC54/edit?usp=sharing",type:301},{source:"/go/synchronized-widgettester",destination:"https://docs.google.com/document/d/1VumsuG6dEFUVpPQLqqKJnhI0CoIS9fCAMN-NFHIPmo0/edit",type:301},{source:"/go/system-mouse-cursor",destination:"https://docs.google.com/document/d/1bJLRy6flZ0wDCbpl2QA8SURUWXIvRJKMRRemxlOo1cA/edit",type:301},{source:"/go/system-ui",destination:"https://docs.google.com/document/d/1JwQ7gdJ1evQ-IfDu7JjouwO8JXYC6fIw3TJzAYNWPPo/edit",type:301},{source:"/go/table-cell-span",destination:"https://docs.google.com/document/d/1OXTnWhI1bjZEfUsE3Cy8tm32ewMIwqKLXBKZPgTwGTM/edit?usp=sharing",type:301},{source:"/go/table-development",destination:"https://docs.google.com/document/d/1fCE-zQNql0nnqJXhycpg902lhL7jrOOz-6sT8s8tv5c/edit?usp=sharing",type:301},{source:"/go/table-view",destination:"https://docs.google.com/document/d/15ecTZE1g3WeswLGFWrnEgMP6SyL6jDRdxOgPsczOcV0/edit?usp=sharing&resourcekey=0-yNd_qFhiPjz6z2TgezWc0A",type:301},{source:"/go/table-view-merged-cells",destination:"https://docs.google.com/document/d/1UekXjG_VKmWYbsxDEzMqTb7F-6oUr05v998n5IqtVWs/edit?usp=sharing",type:301},{source:"/go/tabs-and-text-fields",destination:"https://docs.google.com/document/d/1aHucsI0NWGWu2Dm_XFsBLxiTgJRM8h2XBB7PVAnVxlU/edit?usp=sharing&resourcekey=0-zLbXFlP_A2e_Yoi43vdiiw",type:301},{source:"/go/take-flutter-home",destination:"https://github.com/flutter/put-flutter-to-work",type:301},{source:"/go/template",destination:"https://docs.google.com/document/d/1SFRO8U2toOlAaZ38dsuEU7Wm5fn41wvBCWKiwADqfmw/edit",type:301},{source:"/go/test-all-platforms",destination:"https://docs.google.com/document/d/1-gw2zYFs_jBqsFPpXRonRNLYn6XNgvm34jc9HT84VKE/edit?usp=sharing",type:301},{source:"/go/test-widgets-flutter-binding-clock",destination:"https://docs.google.com/document/d/1EkkLbECNBwHgddBQAZqEy7iQLTIxR1rgChKzxcLwhio/edit",type:301},{source:"/go/testing-code-samples",destination:"https://docs.google.com/document/d/11JXF-9d0u1jGJ9-gdpMGAZr5YudAiyHhXI_pT2vTpnw/edit?usp=sharing",type:301},{source:"/go/text-editing-actions",destination:"https://docs.google.com/document/d/1QaVIr1bbOWJGNyyNsB75sXgTDRMuxP268sLGTBNDut0/edit?usp=sharing",type:301},{source:"/go/text-editing-deltas",destination:"https://docs.google.com/document/d/1PXNd_LwJudiUTnCM2AXRxbd98_p4BlFf6qFhEhv3wvs/edit?usp=sharing",type:301},{source:"/go/text-editing-magnifying-glass",destination:"https://docs.google.com/document/d/1RWq0Kd_xsHR8j7IXtgc25feV3RV8Hzq2KSQEVaDDXUs/edit?resourcekey=0-qLXzpPdvKRwQM8nlCijclQ",type:301},{source:"/go/text-editing-model",destination:"https://docs.google.com/document/d/1lkpg4dfVZif9NJ_dDQ01QkwQC3OqzhUFahhjgv_rcbM/edit#",type:301},{source:"/go/text-field-characters",destination:"https://docs.google.com/document/d/1OOFW0PEZf0orBl445YXJ3nfjyKOqZdmeQ6KU3glUh7s/edit",type:301},{source:"/go/text-selection-menu-appearance",destination:"https://docs.google.com/document/d/1Or32nViSjym0Sk29HccxEzcEITj2oWdielOaeR5cmiY/edit",type:301},{source:"/go/text-selection-menu-customization",destination:"https://docs.google.com/document/d/1hyay1TyUZB7DXzWw45-ruGMZM1yCMWEnC3DzOJYemuc/edit",type:301},{source:"/go/text-selection-menu-modernization",destination:"https://docs.google.com/document/d/1qSEvbgi3m-OvB_dUKch8LHOk-iyPFeLgCsXbK0bI2DA/edit",type:301},{source:"/go/text-selection-programatically",destination:"https://docs.google.com/document/d/1NK4GJ0Wk5eJ3IUw_9oAtz1oYgZ-Sn-kAKHxTvsgr75o/edit?usp=sharing",type:301},{source:"/go/text-selection-theme",destination:"https://docs.google.com/document/d/1sCe7Y_lhREljtn6m0Uu_EycbS82zRvWnNtkfEwFX9W0",type:301},{source:"/go/texttheme-m3",destination:"https://docs.google.com/document/d/1y3K08vL9rMTsGmF_T65fXmWJbsPZohvaVB3T6JuqgjM/edit?resourcekey=0-Gnl-tX58L4yPdV3NgeXFBg",type:301},{source:"/go/texture-to-image",destination:"https://docs.google.com/document/d/12nRNRFRAxikkG8ojIR1a_x8FR7c99TVdFstuRt8kiEQ/edit?usp=sharing",type:301},{source:"/go/theme-extensions",destination:"https://docs.google.com/document/d/1LbD4JqBgAfHex02oR3r2jyu9lTBBNBmyec2ovT59Kr8/edit?usp=sharing",type:301},{source:"/go/tool-announcements",destination:"https://docs.google.com/document/d/1Lv9pkmouTPz5BoRJn441tNdVaLvw8pEtZqLUW4u0HLo/edit?resourcekey=0-8TKBpp9OgxmqvJSqLgtyoQ",type:301},{source:"/go/tool-integration-test-support",destination:"https://docs.google.com/document/d/1jMMZpRAiQC2XTUFnzFsBrWwMsf7KyMuCScYgrJQJOV0/edit?resourcekey=0-ne9HbH1hXCHcIglomNfwtw",type:301},{source:"/go/top-errors-analysis",destination:"https://docs.google.com/document/d/1ZJ9t_uPeXqZnoDOIVes_Yu2BBxP42l99nSfHQPfswZw/edit?usp=sharing",type:301},{source:"/go/towards-improved-performance-tooling",destination:"https://docs.google.com/document/d/1wSDNcG0ww2V6JX1EE8avilCwnOiRVy83zSCWt916O0o",type:301},{source:"/go/tracking-material-states",destination:"https://docs.google.com/document/d/1PJdsOoXhWdhnpYKlW5Nm2Di3Di5XARoYyHerMwWovXE",type:301},{source:"/go/trackpad-gestures",destination:"https://docs.google.com/document/d/1oRvebwjpsC3KlxN1gOYnEdxtNpQDYpPtUFAkmTUe-K8/edit?usp=sharing&resourcekey=0-pt4_T7uggSTrsq2gWeGsYQ",type:301},{source:"/go/transitions-everywhere",destination:"https://docs.google.com/document/d/1qvznbZ-W0g90zkJ8h4k0aPgrpARo4CZUupVzq8la7Cw",type:301},{source:"/go/triage-2022-rfp",destination:"https://docs.google.com/document/d/1Kyrh1WijM04XqtUkVbL2uwDthlG9v3sljgl9HRlU4bU/edit",type:301},{source:"/go/triage-2023-rfc",destination:"https://docs.google.com/document/d/1RBvsolWL9nUkcEFhPZV4b-tstVUDHfHKzs-uQ3HiX-w/edit",type:301},{source:"/go/try",destination:"https://github.com/flutter/put-flutter-to-work",type:301},{source:"/go/ui-imitation-games",destination:"https://docs.google.com/document/d/1SbMjMiFhD2OZGTT3TCAOx6yfG-SYQ5F_fn7wwlZMumM/edit",type:301},{source:"/go/union-typed-transform-stack-in-hit-test",destination:"https://docs.google.com/document/d/1EsH7g-oyQIDZpRteg94iKJKgD7kVngZWq9ngDe6ORbM/edit?usp=sharing",type:301},{source:"/go/unobstructed-platform-views",destination:"https://docs.google.com/document/d/1_P3wa_nMqnhKsy-lDlNxT9GThZX2WhfVym4O4M7Q9qs/edit#",type:301},{source:"/go/unpin-flutter-sdk-dependencies",destination:"https://docs.google.com/document/d/1eq7DU0DvNwjlQRbA_euts91OXncUXtBomxDNCr60lb4/edit?usp=sharing",type:301},{source:"/go/unwrapping-widget-keys",destination:"https://docs.google.com/document/d/1Fc9ZYTTxlJUAfGeQzf83wXuV-wSiRZFHhMgwoUNukhI",type:301},{source:"/go/update-psc",destination:"https://docs.google.com/document/d/12OQx7h8UQzzAi0Kxh-saDC2dg7h2fghCCzwJ0ysPmZE/edit?usp=sharing&resourcekey=0-ATO-1Er3HO2HITm59I0IdA",type:301},{source:"/go/update-scrollbars",destination:"https://docs.google.com/document/d/1mRlc-sRyadE6301aZsD1LJkPG2B9K97Bg_GDHvFhMQI/edit?usp=sharing&resourcekey=0-v4Gk8H280RaPo5qClmDqpA",type:301},{source:"/go/update-text-theme-api",destination:"https://docs.google.com/document/d/1B1s4mm6OYM7mKQ3vZfSTI2HR_KljB78gN6oBHg_zYUs/edit",type:301},{source:"/go/updating-material-3-sliders",destination:"https://docs.google.com/document/d/1JQogsq7WdDt9k4BeBxLfi6CwsA_795tLFZlcFDaB6Gk/edit?usp=sharing",type:301},{source:"/go/use-dart-style-in-flutter-engine",destination:"https://docs.google.com/document/d/1E2ZLNasExXMpSYcxWrd5qSp24WmhIPiFq9FjBC5GoVY?resourcekey=0-bmXuMwfoCn8a9QdQiMd3hA",type:301},{source:"/go/using-widget-state-property",destination:"https://docs.google.com/document/d/1PYnxkFoi3HjBEyuSPonNHJHhsXDc6OOXd-7b4KmfC3g/edit#heading=h.pub7jnop54q0",type:301},{source:"/go/variable-refresh-rate",destination:"https://docs.google.com/document/d/1O-ot6MydAl5pAr_XGnpR-Qq5A5CPDF6edaPu8xQtgCQ/edit?usp=sharing&resourcekey=0-LlXeGtGRC67XL4NrGoc91A",type:301},{source:"/go/vector-graphics",destination:"https://docs.google.com/document/d/1YWffrlc6ZqRwfIiR1qwp1AOkS9JyA_lEURI8p5PsZlg/edit",type:301},{source:"/go/verbatim-logical-keys-for-non-latin-layout",destination:"https://docs.google.com/document/d/1ZNgNxito-NVUS1JKlcjdzHUcKyyiupy8Za-jb131dD4/edit?usp=sharing&resourcekey=0-eeEZ5X0jAzuqSTdmPWlv0w",type:301},{source:"/go/video-player-background-playback",destination:"https://docs.google.com/document/d/12WgZg2qzpCGyCRgZbG4Jr8msAV8Jd4_MTzqWimhg56M/edit?usp=sharing",type:301},{source:"/go/video-player-drm",destination:"https://docs.google.com/document/d/1T4LRRsicr_JuSkXBAXEcv7-9BnYPhmwgYnr1d6G6_o8/edit?usp=sharing",type:301},{source:"/go/view-metrics-overrides",destination:"https://docs.google.com/document/d/1SqDUerkvUmidI8-ulfW5kPYmXS3RQmJY6vkNVby4vAI/edit?usp=sharing",type:301},{source:"/go/web-add-to-app",destination:"https://docs.google.com/document/d/1rFM0qmYds1JkntTruBh8eO72xbT2KoP9JdbizucAAwQ/edit",type:301},{source:"/go/web-astral-projections",destination:"https://docs.google.com/document/d/1pvH-J8opXsjntTpFf1bbsbU8N1vFd8tPKvBgcNn8UKQ",type:301},{source:"/go/web-cleanup-service-worker",destination:"https://docs.google.com/document/d/1czOm3Hmy_oIq3NJStezb9AjwkKyta3NospkCy_DDv9E/edit",type:301},{source:"/go/web-declarative-bootstrap",destination:"https://docs.google.com/document/d/1jVXxC0tNDW45ypfVESyHipL2lHCX32GmFyJNO0u9c6Y/edit?resourcekey=0-AQ8z_0_U8Vq3JBdyracNuQ",type:301},{source:"/go/web-development-proxy-server",destination:"https://docs.google.com/document/d/1Ud9D3F0GxB5Ocoo5NnAy7PH5oo3qxvALxUlAXMCANJ0/edit?usp=sharing",type:301},{source:"/go/web-multiview-js-api",destination:"https://docs.google.com/document/d/1ixwPBG7YIHEONc15t9SOmrfgDK3gghvkk7it_8AFOmw/edit?resourcekey=0-VQC2nby6Coe5OG-R833yXw",type:301},{source:"/go/web-native-text-editing",destination:"https://docs.google.com/document/d/1t6qAX46tsR1tdBS42yro6G_5Igtrj7WzmKKiUI_JC-k/edit",type:301},{source:"/go/web-plugins-layout",destination:"https://docs.google.com/document/d/1PeS-QSAFydHXhjZrqkub-GRPMs83roh8VwhbUScWuGQ",type:301},{source:"/go/web-programmatic-bootstrap",destination:"https://docs.google.com/document/d/13kVA40gQ3T0FLqmV4w5rNvLHjmU6XWFbb7j0_YV7k9M",type:301},{source:"/go/web-renderer-options",destination:"https://docs.google.com/document/d/1aY0iU16wf_sdT7nwfpjgT-IatHNfF3slTiYHKmxcIog",type:301},{source:"/go/web-renderer-unification",destination:"https://docs.google.com/document/d/1QRUMJ-Y6BHgqr7NBZBxv1LWkX2S6B3bhr2BxSUnmDGg",type:301},{source:"/go/web-slot-content",destination:"https://docs.google.com/document/d/1U6aCSuzQsFpOP8_OseL-fwl2-MC2bxJAsgt2R_-sC30",type:301},{source:"/go/webview_flutter_4_interface",destination:"https://docs.google.com/document/d/14tZpyj5oxB6a5ugaR7-kQrxD2wBgctlK5jxwvItv0LI/edit?usp=sharing&resourcekey=0-M5oUr3Pm3f5wtE7v4aQbkQ",type:301},{source:"/go/wide-gamut-framework",destination:"https://docs.google.com/document/d/1JaJg34uB7bVssr3oyS-QLe2FlZHUIHcR6aG83JlKwak",type:301},{source:"/go/widget-budget",destination:"https://docs.google.com/document/d/1JTmf7ae8hWJ3zzqhI-__I9DcUJdQ3TopWsJbKyNDO5A/edit?usp=sharing&resourcekey=0--A0AbM19K-zDXRmIIzaUAg",type:301},{source:"/go/widget-previews-architecture",destination:"https://docs.google.com/document/d/1iMHDjC8HY_0xoOh1soxIf3MWLCtz4nD_Vn2goodO5YA/edit?usp=sharing",type:301},{source:"/go/widget-test-frame-precision",destination:"https://docs.google.com/document/d/1lECLbcmfWdyZFUG5TTGtem3l_SEefcJWHwPO_aZIqwM/edit?usp=sharing&resourcekey=0-6L6P_D571XnvK5oIfpe4MQ",type:301},{source:"/go/widget-tree-image-cache",destination:"https://docs.google.com/document/d/1deEtxZk1VYRmzvkL4gTb3sEnjBrHejQkWObQ4yrP5jE/edit?pli=1#",type:301},{source:"/go/widgetspan-in-selectabletext",destination:"https://docs.google.com/document/d/1nrVRytWVF-1hr8LvUKyENE5s074UInni9ZiColtIIxI",type:301},{source:"/go/windows-arm64",destination:"https://docs.google.com/document/d/1D60WWnAswtDEyr-fsTgH-dMn94xN3w-6RIt8Vm1CUIQ/edit?usp=sharing",type:301},{source:"/go/windows-multi-view-ownership-updates",destination:"https://docs.google.com/document/d/1QSnnu4SK0H_Zuik_x2ceHc8KTpxcG_HDS9KSm6xd5iY/edit?usp=sharing",type:301},{source:"/go/windows-x86-arm64-support",destination:"https://docs.google.com/document/d/1gAGqtTAjO0GntR8bPonIO1aZJnTghPCI_PHJPdNzEmo/edit?resourcekey=0-l1tL7iai47yw3bMl9IcpHw",type:301},{source:"/go/wrap-layout",destination:"https://docs.google.com/document/d/1auZtWT1T5CkUKOUTUld8rF91iN7PvQoOF0IlBNXiDSo/edit?usp=sharing",type:301},{source:"/go/wrap-popupmenu-with-safearea",destination:"https://docs.google.com/document/d/15uBmyEKiOeYGYt1PuBVf4SFK5YhH07EP9ylWP-H9mVE/edit?usp=sharing",type:301},{source:"/go/zero-rebuilds",destination:"https://docs.google.com/document/d/1MfU6gkgIgXCxa5E25sPYuAP5Bmgehyl3Hk7yDH24zl0/edit?usp=sharing",type:301},{source:"/to/actions-shortcuts",destination:"/ui/interactivity/actions-and-shortcuts",type:301},{source:"/to/add-desktop-support",destination:"/platform-integration/desktop#add-desktop-support-to-an-existing-flutter-app",type:301},{source:"/to/add-to-app",destination:"/add-to-app",type:301},{source:"/to/add-swift-package-manager-manually",destination:"/packages-and-plugins/swift-package-manager/for-app-developers#add-to-a-flutter-app-manually",type:301},{source:"/to/add-web-support",destination:"/platform-integration/web/building#add-web-support-to-an-existing-app",type:301},{source:"/to/android-ffi",destination:"/platform-integration/android/c-interop",type:301},{source:"/to/android-setup",destination:"/platform-integration/android/setup",type:301},{source:"/to/android-supported-architectures",destination:"/deployment/android#what-are-the-supported-target-architectures",type:301},{source:"/to/asset-from-package",destination:"/ui/assets/assets-and-images#from-packages",type:301},{source:"/to/brick-breaker",destination:"https://codelabs.developers.google.cn/codelabs/flutter-flame-brick-breaker",type:301},{source:"/to/build-modes",destination:"/testing/build-modes",type:301},{source:"/to/baa",destination:"https://flutter.dev/events/building-agentic-apps",type:301},{source:"/to/china-setup",destination:"/community/china",type:301},{source:"/to/ci-yaml",destination:"https://github.com/flutter/flutter/blob/main/docs/infra/Ci-Best-Practices.md",type:301},{source:"/to/crash-reporting",destination:"/reference/crash-reporting",type:301},{source:"/to/debug-mode",destination:"/testing/build-modes#debug",type:301},{source:"/to/debug-render-layer",destination:"/testing/code-debugging#print-the-render-tree",type:301},{source:"/to/deep-link-tool",destination:"/ui/navigation/deep-linking",type:301},{source:"/to/deep-linking",destination:"/ui/navigation/deep-linking",type:301},{source:"/to/develop-packages",destination:"/packages-and-plugins/developing-packages",type:301},{source:"/to/develop-plugins",destination:"/packages-and-plugins/developing-packages#plugin",type:301},{source:"/to/edit-plugins",destination:"/packages-and-plugins/developing-packages#edit-plugin-package",type:301},{source:"/to/editor-setup",destination:"/tools/editors",type:301},{source:"/to/engine-artifacts",destination:"https://github.com/flutter/flutter/blob/main/docs/tool/Engine-artifacts.md",type:301},{source:"/to/engine-rbe",destination:"https://github.com/flutter/flutter/blob/main/engine/src/flutter/docs/rbe/rbe.md",type:301},{source:"/to/engine-tool",destination:"https://github.com/flutter/flutter/blob/main/engine/src/flutter/tools/engine_tool/README.md",type:301},{source:"/to/engine-tool-bug",destination:"https://github.com/flutter/flutter/issues/new?labels=e:%20engine-tool",type:301},{source:"/to/endorsed-federated-plugin",destination:"/packages-and-plugins/developing-packages#endorsed-federated-plugin",type:301},{source:"/to/et",destination:"https://docs.flutter.cn/to/engine-tool",type:301},{source:"/to/experimental-branches",destination:"https://github.com/flutter/flutter/blob/main/docs/infra/Experimental-Branch.md",type:301},{source:"/to/favorites",destination:"/packages-and-plugins/favorites",type:301},{source:"/to/feature-flags",destination:"https://github.com/flutter/flutter/blob/main/docs/contributing/Feature-flags.md",type:301},{source:"/to/federated-plugins",destination:"/packages-and-plugins/developing-packages#federated-plugins",type:301},{source:"/to/ffi-package",destination:"/packages-and-plugins/developing-packages#plugin-ffi",type:301},{source:"/to/flutter-gen-deprecation",destination:"/release/breaking-changes/flutter-generate-i10n-source",type:301},{source:"/to/flutter-plugins-configuration",destination:"/release/breaking-changes/flutter-plugins-configuration",type:301},{source:"/to/flutter-fix",destination:"/tools/flutter-fix",type:301},{source:"/to/flutter-gradle-plugin-apply",destination:"/release/breaking-changes/flutter-gradle-plugin-apply",type:301},{source:"/to/flutter-test-docs",destination:"https://api.flutter-io.cn/flutter/flutter_test/flutter_test-library.html",type:301},{source:"/to/font-from-package",destination:"/cookbook/design/package-fonts#use",type:301},{source:"/to/gesture-disambiguation",destination:"/ui/interactivity/gestures#gesture-disambiguation",type:301},{source:"/to/gestures",destination:"/ui/interactivity/gestures",type:301},{source:"/to/handle-errors",destination:"/testing/errors",type:301},{source:"/to/hot-reload",destination:"/tools/hot-reload",type:301},{source:"/to/impeller",destination:"/perf/impeller",type:301},{source:"/to/install",destination:"/get-started",type:301},{source:"/to/integrate-android-archive",destination:"/add-to-app/android/project-setup",type:301},{source:"/to/integration-test-on-web",destination:"/testing/integration-tests#test-in-a-web-browser",type:301},{source:"/to/integration-testing",destination:"/cookbook/testing/integration/introduction",type:301},{source:"/to/intellij-setup",destination:"/tools/android-studio#setup",type:301},{source:"/to/internationalization",destination:"/ui/internationalization",type:301},{source:"/to/ios-add-to-app-embed-setup",destination:"/add-to-app/ios/project-setup#embed-a-flutter-module-in-your-ios-app",type:301},{source:"/to/ios-app-signing",destination:"/deployment/ios#review-xcode-project-settings",type:301},{source:"/to/ios-create-flutter-engine",destination:"/add-to-app/ios/add-flutter-screen#create-a-flutterengine",type:301},{source:"/to/ios-deploy",destination:"/deployment/ios",type:301},{source:"/to/ios-development-team",destination:"/deployment/ios#review-xcode-project-settings",type:301},{source:"/to/ios-ffi",destination:"/platform-integration/ios/c-interop",type:301},{source:"/to/ios-minimum-target",destination:"/deployment/ios#review-xcode-project-settings",type:301},{source:"/to/to/java-gradle-incompatibility",destination:"/release/breaking-changes/android-java-gradle-migration-guide",type:301},{source:"/to/java-gradle-incompatibility",destination:"/release/breaking-changes/android-java-gradle-migration-guide",type:301},{source:"/to/linux-android-setup",destination:"/platform-integration/android/setup",type:301},{source:"/to/macos-android-setup",destination:"/platform-integration/android/setup",type:301},{source:"/to/macos-deploy",destination:"/deployment/macos",type:301},{source:"/to/macos-entitlements",destination:"/platform-integration/macos/building#entitlements-and-the-app-sandbox",type:301},{source:"/to/macos-ffi",destination:"/platform-integration/macos/c-interop",type:301},{source:"/to/macos-ios-setup",destination:"/platform-integration/ios/setup",type:301},{source:"/to/macos-minimum-target",destination:"/deployment/ios#review-xcode-project-settings",type:301},{source:"/to/minimize-layout-passes",destination:"/perf/best-practices#minimize-layout-passes-caused-by-intrinsic-operations",type:301},{source:"/to/performance-overlay",destination:"/perf/ui-performance#performance-overlay",type:301},{source:"/to/platform-channels",destination:"/platform-integration/platform-channels",type:301},{source:"/to/platform-channels-codec",destination:"/platform-integration/platform-channels#codec",type:301},{source:"/to/platform-plugins",destination:"/packages-and-plugins/using-packages",type:301},{source:"/to/platform-setup",destination:"/platform-integration#setup",type:301},{source:"/to/previous-releases",destination:"/install/archive",type:301},{source:"/to/profile-mode",destination:"/testing/build-modes#profile",type:301},{source:"/to/pub-system-cache",destination:"https://dart.cn/tools/pub/glossary#system-cache",type:301},{source:"/to/pubspec-plugin-platforms",destination:"/packages-and-plugins/developing-packages#plugin-platforms",type:301},{source:"/to/recommend-const",destination:"/perf/best-practices#control-build-cost",type:301},{source:"/to/reference-keystore",destination:"/deployment/android#reference-the-keystore-from-the-app",type:301},{source:"/to/release-mode",destination:"/testing/build-modes#release",type:301},{source:"/to/report-bugs",destination:"/resources/bug-reports",type:301},{source:"/to/resolution-aware-images",destination:"/ui/assets/assets-and-images#resolution-aware",type:301},{source:"/to/review-gradle-config",destination:"/deployment/android#review-the-gradle-build-configuration",type:301},{source:"/to/roadmap",destination:"https://github.com/flutter/flutter/blob/main/docs/roadmap/Roadmap.md",type:301},{source:"/to/save-layer-perf",destination:"/perf/best-practices#use-savelayer-thoughtfully",type:301},{source:"/to/spm",destination:"/packages-and-plugins/swift-package-manager",type:301},{source:"/to/state-management-sample",destination:"/data-and-backend/state-mgmt/simple",type:301},{source:"/to/switch-flutter-version",destination:"/install/upgrade#switch-to-a-specific-flutter-version",type:301},{source:"/to/team-infra",destination:"https://github.com/flutter/flutter/blob/main/docs/triage/Infra-Triage.md",type:301},{source:"/to/template",destination:"https://docs.flutter.cn/go/template",type:301},{source:"/to/test-drive",destination:"/install",type:301},{source:"/to/track-widget-creation",destination:"/tools/devtools/inspector#track-widget-creation",type:301},{source:"/to/troubleshoot-devices",destination:"/install/troubleshoot",type:301},{source:"/to/unbounded-constraints",destination:"/ui/layout/constraints#unbounded",type:301},{source:"/to/uiscene-migration",destination:"/release/breaking-changes/uiscenedelegate",type:301},{source:"/to/unit-testing",destination:"/cookbook/testing/unit/introduction",type:301},{source:"/to/update-linux-path",destination:"/install/add-to-path#linux",type:301},{source:"/to/update-macos-path",destination:"/install/add-to-path#macos",type:301},{source:"/to/update-windows-path",destination:"/install/add-to-path#windows",type:301},{source:"/to/use-mirror-site",destination:"/community/china#configure-your-machine-to-use-a-mirror-site",type:301},{source:"/to/use-profile-mode",destination:"/perf/ui-performance#run-in-profile-mode",type:301},{source:"/to/wasm",destination:"/platform-integration/web/wasm",type:301},{source:"/to/web-bootstrapping",destination:"/platform-integration/web/initialization",type:301},{source:"/to/web-html-renderer-deprecation",destination:"https://github.com/flutter/flutter/issues/145954",type:301},{source:"/to/web-images",destination:"/platform-integration/web/web-images",type:301},{source:"/to/web-multiview-runwidget",destination:"/platform-integration/web/embedding-flutter-web#replace-runapp-by-runwidget-in-dart",type:301},{source:"/to/web-renderers",destination:"/platform-integration/web/renderers",type:301},{source:"/to/widget-previews",destination:"/tools/widget-previewer",type:301},{source:"/to/widget-testing",destination:"/cookbook/testing/widget/introduction",type:301},{source:"/to/windows-android-setup",destination:"/platform-integration/android/setup",type:301},{source:"/to/windows-ffi",destination:"/platform-integration/windows/building#integrating-with-windows",type:301},{source:"/to/windows-setup",destination:"/platform-integration/windows/setup",type:301},{source:"/to/xcode-name-config",destination:"/deployment/ios#review-xcode-project-settings",type:301}],headers:[{source:"/f/*.json",headers:[{key:"Access-Control-Allow-Origin",value:"*"}]},{source:"**/*.@(avif|jpg|jpeg|gif|png|webp|webm|svg|md|css|js)",headers:[{key:"Cache-Control",value:"max-age=3600"},{key:"Access-Control-Allow-Origin",value:"*"}]},{source:"/assets/images/*.@(jpg|jpeg|png|webp|avif)",headers:[{key:"Cache-Control",value:"max-age=604800"},{key:"Access-Control-Allow-Origin",value:"*"}]},{source:"**",headers:[{key:"Referrer-Policy",value:"strict-origin-when-cross-origin"},{key:"X-Content-Type-Options",value:"nosniff"}]}]},emulators:{hosting:{port:5502}}},ze=wo;if(typeof window<"u"){let n=window.location.pathname,t=Xe(n);console.log("Redirect: ",t),t&&(window.location.href=t)}if(typeof window<"u"){let n=new URL(window.location.href),t=n.pathname,e=!t.toLowerCase().includes(".htm"),s=!t.endsWith("/");if(e&&s){let o=t+".html";fetch(o,{method:"HEAD",mode:"no-cors"}).then(function(i){i.status==200&&window.location.replace(o+n.search+n.hash)})}}function Xe(n,t){let e=t||ze.hosting.redirects;for(let s of e)try{if(s.regex){let o=Ot.compile(s.regex),i=o.matcher(n);if(i.matches()){let B=s.destination,r=o.namedGroups();if(Object.keys(r).length>0)for(let c in r)B=B.replaceAll(`:${c}`,i.group(c));let a=i.groupCount();if(a>0)for(let c=1;c<=a;c++)B=B.replaceAll(`:${c}`,i.group(c));return B}}if(s.source){if(S(n,s.source))return s.destination;let i=se(s.source).exec(n);if(i){let B=s.destination,r=ee(s.source);for(let a=0;a