-
Notifications
You must be signed in to change notification settings - Fork 8
/
guideline_mobile.html
34 lines (34 loc) · 33.2 KB
/
guideline_mobile.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<html>
<head>
<title>Tính Gpa giùm bạn (KHTN-only)</title>
<link href="default.css" type="text/css" rel="stylesheet">
</head>
<body>
<div class="class2 memberprofile">
<br>
<br>
<br>
<h2>KHTN GPA Calculator Bookmarklet for Mobile</h2>
<ul>
<li>B1. Nhấn và giữ vào nút <b>"Khtn GPA v 2.0"</b> bên dưới, chọn <b>Sao chép địa chỉ</b>, hoặc <b>Copy link address</b></li>
<li>B2. Nhấn vào <b>biểu tượng dấu 3 chấm (Menu)</b>, sau đó nhấn vào <b>biểu tượng ngôi sao (Bookmark)</li>
<li>B3. Nhấn <b>edit/sửa</b> ở thông báo vừa hiện ra dưới cùng màn hình</li>
<li>B4. Màn hình sửa bookmark hiện ra, hãy thay đổi tên thành "<b>GPA</b>" (hay bất cứ tên nào gợi nhớ) </li><li> <b>Địa chỉ liên kết</b> thì dán vào địa chỉ đã sao chép ở B1</li>
<li>B5. Tới trang <b>Tra cứu kết quả</b> của <b>Portal</b></li>
<li>B6. Nhập "<b>GPA</b>" (tên mà bạn đã lưu ở B2) vào thanh địa chỉ, và nhấn vào <b>bookmark</b> hiện ra</li>
<li> Xong :D</li>
</ul>
<br>
<br>
<a class="back" href="javascript:var%20%24jscomp%3D%24jscomp%7C%7C%7B%7D%3B%24jscomp.scope%3D%7B%7D%3B%24jscomp.arrayIteratorImpl%3Dfunction(a)%7Bvar%20c%3D0%3Breturn%20function()%7Breturn%20c%3Ca.length%3F%7Bdone%3A!1%2Cvalue%3Aa%5Bc%2B%2B%5D%7D%3A%7Bdone%3A!0%7D%7D%7D%3B%24jscomp.arrayIterator%3Dfunction(a)%7Breturn%7Bnext%3A%24jscomp.arrayIteratorImpl(a)%7D%7D%3B%24jscomp.makeIterator%3Dfunction(a)%7Bvar%20c%3D%22undefined%22!%3Dtypeof%20Symbol%26%26Symbol.iterator%26%26a%5BSymbol.iterator%5D%3Bif(c)return%20c.call(a)%3Bif(%22number%22%3D%3Dtypeof%20a.length)return%20%24jscomp.arrayIterator(a)%3Bthrow%20Error(String(a)%2B%22%20is%20not%20an%20iterable%20or%20ArrayLike%22)%3B%7D%3B%24jscomp.arrayFromIterator%3Dfunction(a)%7Bfor(var%20c%2Cd%3D%5B%5D%3B!(c%3Da.next()).done%3B)d.push(c.value)%3Breturn%20d%7D%3B%24jscomp.arrayFromIterable%3Dfunction(a)%7Breturn%20a%20instanceof%20Array%3Fa%3A%24jscomp.arrayFromIterator(%24jscomp.makeIterator(a))%7D%3B%24jscomp.ASSUME_ES5%3D!1%3B%24jscomp.ASSUME_NO_NATIVE_MAP%3D!1%3B%24jscomp.ASSUME_NO_NATIVE_SET%3D!1%3B%24jscomp.SIMPLE_FROUND_POLYFILL%3D!1%3B%24jscomp.ISOLATE_POLYFILLS%3D!1%3B%24jscomp.FORCE_POLYFILL_PROMISE%3D!1%3B%24jscomp.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION%3D!1%3B%24jscomp.defineProperty%3D%24jscomp.ASSUME_ES5%7C%7C%22function%22%3D%3Dtypeof%20Object.defineProperties%3FObject.defineProperty%3Afunction(a%2Cc%2Cd)%7Bif(a%3D%3DArray.prototype%7C%7Ca%3D%3DObject.prototype)return%20a%3Ba%5Bc%5D%3Dd.value%3Breturn%20a%7D%3B%24jscomp.getGlobal%3Dfunction(a)%7Ba%3D%5B%22object%22%3D%3Dtypeof%20globalThis%26%26globalThis%2Ca%2C%22object%22%3D%3Dtypeof%20window%26%26window%2C%22object%22%3D%3Dtypeof%20self%26%26self%2C%22object%22%3D%3Dtypeof%20global%26%26global%5D%3Bfor(var%20c%3D0%3Bc%3Ca.length%3B%2B%2Bc)%7Bvar%20d%3Da%5Bc%5D%3Bif(d%26%26d.Math%3D%3DMath)return%20d%7Dthrow%20Error(%22Cannot%20find%20global%20object%22)%3B%7D%3B%24jscomp.global%3D%24jscomp.getGlobal(this)%3B%24jscomp.IS_SYMBOL_NATIVE%3D%22function%22%3D%3D%3Dtypeof%20Symbol%26%26%22symbol%22%3D%3D%3Dtypeof%20Symbol(%22x%22)%3B%24jscomp.TRUST_ES6_POLYFILLS%3D!%24jscomp.ISOLATE_POLYFILLS%7C%7C%24jscomp.IS_SYMBOL_NATIVE%3B%24jscomp.polyfills%3D%7B%7D%3B%24jscomp.propertyToPolyfillSymbol%3D%7B%7D%3B%24jscomp.POLYFILL_PREFIX%3D%22%24jscp%24%22%3Bvar%20%24jscomp%24lookupPolyfilledValue%3Dfunction(a%2Cc%2Cd)%7Bif(!d%7C%7Cnull!%3Da)%7Bd%3D%24jscomp.propertyToPolyfillSymbol%5Bc%5D%3Bif(null%3D%3Dd)return%20a%5Bc%5D%3Bd%3Da%5Bd%5D%3Breturn%20void%200!%3D%3Dd%3Fd%3Aa%5Bc%5D%7D%7D%3B%24jscomp.polyfill%3Dfunction(a%2Cc%2Cd%2Cg)%7Bc%26%26(%24jscomp.ISOLATE_POLYFILLS%3F%24jscomp.polyfillIsolated(a%2Cc%2Cd%2Cg)%3A%24jscomp.polyfillUnisolated(a%2Cc%2Cd%2Cg))%7D%3B%24jscomp.polyfillUnisolated%3Dfunction(a%2Cc%2Cd%2Cg)%7Bd%3D%24jscomp.global%3Ba%3Da.split(%22.%22)%3Bfor(g%3D0%3Bg%3Ca.length-1%3Bg%2B%2B)%7Bvar%20l%3Da%5Bg%5D%3Bif(!(l%20in%20d))return%3Bd%3Dd%5Bl%5D%7Da%3Da%5Ba.length-1%5D%3Bg%3Dd%5Ba%5D%3Bc%3Dc(g)%3Bc!%3Dg%26%26null!%3Dc%26%26%24jscomp.defineProperty(d%2Ca%2C%7Bconfigurable%3A!0%2Cwritable%3A!0%2Cvalue%3Ac%7D)%7D%3B%24jscomp.polyfillIsolated%3Dfunction(a%2Cc%2Cd%2Cg)%7Bvar%20l%3Da.split(%22.%22)%3Ba%3D1%3D%3D%3Dl.length%3Bg%3Dl%5B0%5D%3Bg%3D!a%26%26g%20in%20%24jscomp.polyfills%3F%24jscomp.polyfills%3A%24jscomp.global%3Bfor(var%20q%3D0%3Bq%3Cl.length-1%3Bq%2B%2B)%7Bvar%20t%3Dl%5Bq%5D%3Bif(!(t%20in%20g))return%3Bg%3Dg%5Bt%5D%7Dl%3Dl%5Bl.length-1%5D%3Bd%3D%24jscomp.IS_SYMBOL_NATIVE%26%26%22es6%22%3D%3D%3Dd%3Fg%5Bl%5D%3Anull%3Bc%3Dc(d)%3Bnull!%3Dc%26%26(a%3F%24jscomp.defineProperty(%24jscomp.polyfills%2Cl%2C%7Bconfigurable%3A!0%2Cwritable%3A!0%2Cvalue%3Ac%7D)%3Ac!%3D%3Dd%26%26(void%200%3D%3D%3D%24jscomp.propertyToPolyfillSymbol%5Bl%5D%26%26(d%3D1E9*Math.random()%3E%3E%3E0%2C%24jscomp.propertyToPolyfillSymbol%5Bl%5D%3D%24jscomp.IS_SYMBOL_NATIVE%3F%24jscomp.global.Symbol(l)%3A%24jscomp.POLYFILL_PREFIX%2Bd%2B%22%24%22%2Bl)%2C%24jscomp.defineProperty(g%2C%24jscomp.propertyToPolyfillSymbol%5Bl%5D%2C%7Bconfigurable%3A!0%2Cwritable%3A!0%2Cvalue%3Ac%7D)))%7D%3B%24jscomp.underscoreProtoCanBeSet%3Dfunction()%7Bvar%20a%3D%7Ba%3A!0%7D%2Cc%3D%7B%7D%3Btry%7Breturn%20c.__proto__%3Da%2Cc.a%7Dcatch(d)%7B%7Dreturn!1%7D%3B%24jscomp.setPrototypeOf%3D%24jscomp.TRUST_ES6_POLYFILLS%26%26%22function%22%3D%3Dtypeof%20Object.setPrototypeOf%3FObject.setPrototypeOf%3A%24jscomp.underscoreProtoCanBeSet()%3Ffunction(a%2Cc)%7Ba.__proto__%3Dc%3Bif(a.__proto__!%3D%3Dc)throw%20new%20TypeError(a%2B%22%20is%20not%20extensible%22)%3Breturn%20a%7D%3Anull%3B%24jscomp.generator%3D%7B%7D%3B%24jscomp.generator.ensureIteratorResultIsObject_%3Dfunction(a)%7Bif(!(a%20instanceof%20Object))throw%20new%20TypeError(%22Iterator%20result%20%22%2Ba%2B%22%20is%20not%20an%20object%22)%3B%7D%3B%24jscomp.generator.Context%3Dfunction()%7Bthis.isRunning_%3D!1%3Bthis.yieldAllIterator_%3Dnull%3Bthis.yieldResult%3Dvoid%200%3Bthis.nextAddress%3D1%3Bthis.finallyAddress_%3Dthis.catchAddress_%3D0%3Bthis.finallyContexts_%3Dthis.abruptCompletion_%3Dnull%7D%3B%24jscomp.generator.Context.prototype.start_%3Dfunction()%7Bif(this.isRunning_)throw%20new%20TypeError(%22Generator%20is%20already%20running%22)%3Bthis.isRunning_%3D!0%7D%3B%24jscomp.generator.Context.prototype.stop_%3Dfunction()%7Bthis.isRunning_%3D!1%7D%3B%24jscomp.generator.Context.prototype.jumpToErrorHandler_%3Dfunction()%7Bthis.nextAddress%3Dthis.catchAddress_%7C%7Cthis.finallyAddress_%7D%3B%24jscomp.generator.Context.prototype.next_%3Dfunction(a)%7Bthis.yieldResult%3Da%7D%3B%24jscomp.generator.Context.prototype.throw_%3Dfunction(a)%7Bthis.abruptCompletion_%3D%7Bexception%3Aa%2CisException%3A!0%7D%3Bthis.jumpToErrorHandler_()%7D%3B%24jscomp.generator.Context.prototype%5B%22return%22%5D%3Dfunction(a)%7Bthis.abruptCompletion_%3D%7B%22return%22%3Aa%7D%3Bthis.nextAddress%3Dthis.finallyAddress_%7D%3B%24jscomp.generator.Context.prototype.jumpThroughFinallyBlocks%3Dfunction(a)%7Bthis.abruptCompletion_%3D%7BjumpTo%3Aa%7D%3Bthis.nextAddress%3Dthis.finallyAddress_%7D%3B%24jscomp.generator.Context.prototype.yield%3Dfunction(a%2Cc)%7Bthis.nextAddress%3Dc%3Breturn%7Bvalue%3Aa%7D%7D%3B%24jscomp.generator.Context.prototype.yieldAll%3Dfunction(a%2Cc)%7Bvar%20d%3D%24jscomp.makeIterator(a)%2Cg%3Dd.next()%3B%24jscomp.generator.ensureIteratorResultIsObject_(g)%3Bif(g.done)this.yieldResult%3Dg.value%2Cthis.nextAddress%3Dc%3Belse%20return%20this.yieldAllIterator_%3Dd%2Cthis.yield(g.value%2Cc)%7D%3B%24jscomp.generator.Context.prototype.jumpTo%3Dfunction(a)%7Bthis.nextAddress%3Da%7D%3B%24jscomp.generator.Context.prototype.jumpToEnd%3Dfunction()%7Bthis.nextAddress%3D0%7D%3B%24jscomp.generator.Context.prototype.setCatchFinallyBlocks%3Dfunction(a%2Cc)%7Bthis.catchAddress_%3Da%3Bvoid%200!%3Dc%26%26(this.finallyAddress_%3Dc)%7D%3B%24jscomp.generator.Context.prototype.setFinallyBlock%3Dfunction(a)%7Bthis.catchAddress_%3D0%3Bthis.finallyAddress_%3Da%7C%7C0%7D%3B%24jscomp.generator.Context.prototype.leaveTryBlock%3Dfunction(a%2Cc)%7Bthis.nextAddress%3Da%3Bthis.catchAddress_%3Dc%7C%7C0%7D%3B%24jscomp.generator.Context.prototype.enterCatchBlock%3Dfunction(a)%7Bthis.catchAddress_%3Da%7C%7C0%3Ba%3Dthis.abruptCompletion_.exception%3Bthis.abruptCompletion_%3Dnull%3Breturn%20a%7D%3B%24jscomp.generator.Context.prototype.enterFinallyBlock%3Dfunction(a%2Cc%2Cd)%7Bd%3Fthis.finallyContexts_%5Bd%5D%3Dthis.abruptCompletion_%3Athis.finallyContexts_%3D%5Bthis.abruptCompletion_%5D%3Bthis.catchAddress_%3Da%7C%7C0%3Bthis.finallyAddress_%3Dc%7C%7C0%7D%3B%24jscomp.generator.Context.prototype.leaveFinallyBlock%3Dfunction(a%2Cc)%7Bvar%20d%3Dthis.finallyContexts_.splice(c%7C%7C0)%5B0%5D%3Bif(d%3Dthis.abruptCompletion_%3Dthis.abruptCompletion_%7C%7Cd)%7Bif(d.isException)return%20this.jumpToErrorHandler_()%3Bvoid%200!%3Dd.jumpTo%26%26this.finallyAddress_%3Cd.jumpTo%3F(this.nextAddress%3Dd.jumpTo%2Cthis.abruptCompletion_%3Dnull)%3Athis.nextAddress%3Dthis.finallyAddress_%7Delse%20this.nextAddress%3Da%7D%3B%24jscomp.generator.Context.prototype.forIn%3Dfunction(a)%7Breturn%20new%20%24jscomp.generator.Context.PropertyIterator(a)%7D%3B%24jscomp.generator.Context.PropertyIterator%3Dfunction(a)%7Bthis.object_%3Da%3Bthis.properties_%3D%5B%5D%3Bfor(var%20c%20in%20a)this.properties_.push(c)%3Bthis.properties_.reverse()%7D%3B%24jscomp.generator.Context.PropertyIterator.prototype.getNext%3Dfunction()%7Bfor(%3B0%3Cthis.properties_.length%3B)%7Bvar%20a%3Dthis.properties_.pop()%3Bif(a%20in%20this.object_)return%20a%7Dreturn%20null%7D%3B%24jscomp.generator.Engine_%3Dfunction(a)%7Bthis.context_%3Dnew%20%24jscomp.generator.Context%3Bthis.program_%3Da%7D%3B%24jscomp.generator.Engine_.prototype.next_%3Dfunction(a)%7Bthis.context_.start_()%3Bif(this.context_.yieldAllIterator_)return%20this.yieldAllStep_(this.context_.yieldAllIterator_.next%2Ca%2Cthis.context_.next_)%3Bthis.context_.next_(a)%3Breturn%20this.nextStep_()%7D%3B%24jscomp.generator.Engine_.prototype.return_%3Dfunction(a)%7Bthis.context_.start_()%3Bvar%20c%3Dthis.context_.yieldAllIterator_%3Bif(c)return%20this.yieldAllStep_(%22return%22in%20c%3Fc%5B%22return%22%5D%3Afunction(d)%7Breturn%7Bvalue%3Ad%2Cdone%3A!0%7D%7D%2Ca%2Cthis.context_%5B%22return%22%5D)%3Bthis.context_%5B%22return%22%5D(a)%3Breturn%20this.nextStep_()%7D%3B%24jscomp.generator.Engine_.prototype.throw_%3Dfunction(a)%7Bthis.context_.start_()%3Bif(this.context_.yieldAllIterator_)return%20this.yieldAllStep_(this.context_.yieldAllIterator_%5B%22throw%22%5D%2Ca%2Cthis.context_.next_)%3Bthis.context_.throw_(a)%3Breturn%20this.nextStep_()%7D%3B%24jscomp.generator.Engine_.prototype.yieldAllStep_%3Dfunction(a%2Cc%2Cd)%7Btry%7Bvar%20g%3Da.call(this.context_.yieldAllIterator_%2Cc)%3B%24jscomp.generator.ensureIteratorResultIsObject_(g)%3Bif(!g.done)return%20this.context_.stop_()%2Cg%3Bvar%20l%3Dg.value%7Dcatch(q)%7Breturn%20this.context_.yieldAllIterator_%3Dnull%2Cthis.context_.throw_(q)%2Cthis.nextStep_()%7Dthis.context_.yieldAllIterator_%3Dnull%3Bd.call(this.context_%2Cl)%3Breturn%20this.nextStep_()%7D%3B%24jscomp.generator.Engine_.prototype.nextStep_%3Dfunction()%7Bfor(%3Bthis.context_.nextAddress%3B)try%7Bvar%20a%3Dthis.program_(this.context_)%3Bif(a)return%20this.context_.stop_()%2C%7Bvalue%3Aa.value%2Cdone%3A!1%7D%7Dcatch(c)%7Bthis.context_.yieldResult%3Dvoid%200%2Cthis.context_.throw_(c)%7Dthis.context_.stop_()%3Bif(this.context_.abruptCompletion_)%7Ba%3Dthis.context_.abruptCompletion_%3Bthis.context_.abruptCompletion_%3Dnull%3Bif(a.isException)throw%20a.exception%3Breturn%7Bvalue%3Aa%5B%22return%22%5D%2Cdone%3A!0%7D%7Dreturn%7Bvalue%3Avoid%200%2Cdone%3A!0%7D%7D%3B%24jscomp.generator.Generator_%3Dfunction(a)%7Bthis.next%3Dfunction(c)%7Breturn%20a.next_(c)%7D%3Bthis%5B%22throw%22%5D%3Dfunction(c)%7Breturn%20a.throw_(c)%7D%3Bthis%5B%22return%22%5D%3Dfunction(c)%7Breturn%20a.return_(c)%7D%3Bthis%5BSymbol.iterator%5D%3Dfunction()%7Breturn%20this%7D%7D%3B%24jscomp.generator.createGenerator%3Dfunction(a%2Cc)%7Bvar%20d%3Dnew%20%24jscomp.generator.Generator_(new%20%24jscomp.generator.Engine_(c))%3B%24jscomp.setPrototypeOf%26%26a.prototype%26%26%24jscomp.setPrototypeOf(d%2Ca.prototype)%3Breturn%20d%7D%3B%24jscomp.asyncExecutePromiseGenerator%3Dfunction(a)%7Bfunction%20c(g)%7Breturn%20a.next(g)%7Dfunction%20d(g)%7Breturn%20a%5B%22throw%22%5D(g)%7Dreturn%20new%20Promise(function(g%2Cl)%7Bfunction%20q(t)%7Bt.done%3Fg(t.value)%3APromise.resolve(t.value).then(c%2Cd).then(q%2Cl)%7Dq(a.next())%7D)%7D%3B%24jscomp.asyncExecutePromiseGeneratorFunction%3Dfunction(a)%7Breturn%20%24jscomp.asyncExecutePromiseGenerator(a())%7D%3B%24jscomp.asyncExecutePromiseGeneratorProgram%3Dfunction(a)%7Breturn%20%24jscomp.asyncExecutePromiseGenerator(new%20%24jscomp.generator.Generator_(new%20%24jscomp.generator.Engine_(a)))%7D%3B(function()%7Bfunction%20a()%7Bvar%20m%3D%5B%7Bscore%3A9%2Cletter%3A%22A%2B%22%2CfourRounding%3A4%7D%2C%7Bscore%3A8%2Cletter%3A%22A.%22%2CfourRounding%3A3.5%7D%2C%7Bscore%3A7%2Cletter%3A%22B%2B%22%2CfourRounding%3A3%7D%2C%7Bscore%3A6%2Cletter%3A%22B.%22%2CfourRounding%3A2.5%7D%2C%7Bscore%3A5%2Cletter%3A%22C.%22%2CfourRounding%3A2%7D%2C%7Bscore%3A4%2Cletter%3A%22D%2B%22%2CfourRounding%3A1.5%7D%2C%7Bscore%3A3%2Cletter%3A%22D.%22%2CfourRounding%3A1%7D%2C%7Bscore%3A0%2Cletter%3A%22F.%22%2CfourRounding%3A0%7D%5D%3Bk.forEach(function(e)%7B0%3C%3De.score%26%26(e.letter%3Dm.find(function(b)%7Breturn%20e.score%3E%3Db.score%7D).letter%2Ce.fourRounding%3Dm.find(function(b)%7Breturn%20e.score%3E%3Db.score%7D).fourRounding)%7D)%3B0%3D%3D%3D%24('%23tbDiemThiGK%20thead%20tr%20th%3Acontains(%22Thang%20ch%5Cu1eef%22)').length%26%26(%24(%22th%3Aeq(5)%22%2C%22%23tbDiemThiGK%20thead%20tr%22).after(%22%3Cth%3EThang%20ch%5Cu1eef%3C%2Fth%3E%22)%2C%24(%22%23tbDiemThiGK%20tbody%20tr%22).each(function()%7Bvar%20e%3Dk%5B%24(this).attr(%22id%22)-1%5D.letter%3B%24(%22td%3Aeq(5)%22%2Cthis).after(%22%3Ctd%3E%22%2Be%2B%22%3C%2Ftd%3E%22)%7D))%3Bconsole.log(%24(p).html())%3B0%3D%3D%3D%24('%23tbDiemThiGK%20thead%20tr%20th%3Acontains(%22Thang%204%22)').length%26%26(%24(%22th%3Aeq(6)%22%2C%22%23tbDiemThiGK%20thead%20tr%22).after(%22%3Cth%3EThang%204%3C%2Fth%3E%22)%2C%24(%22%23tbDiemThiGK%20tbody%20tr%22).each(function()%7Bvar%20e%3Dk%5B%24(this).attr(%22id%22)-1%5D.fourRounding%3B%24(%22td%3Aeq(6)%22%2Cthis).after(%22%3Ctd%3E%22%2Be%2B%22%3C%2Ftd%3E%22)%7D))%3Bconsole.log(%24(p).html())%7Dfunction%20c()%7Bvar%20m%3D%22Anh%20v%5Cu0103n%3BGi%5Cu00e1o%20d%5Cu1ee5c%20qu%5Cu1ed1c%20ph%5Cu00f2ng%3BTh%5Cu1ec3%20d%5Cu1ee5c%3BTin%20h%5Cu1ecdc%20c%5Cu01a1%20s%5Cu1edf%3BTin%20hoc%20co%20so%3BAnh%20van%3BGiao%20duc%20quoc%20phong%3BThe%20duc%22.split(%22%3B%22)%3Bif(p%3D%24(%22%23tbDiemThiGK%22))%7Bn%3Dp.find(%22tbody%20tr%22)%3Bfor(var%20e%3D0%3Be%3Cn.length%3Be%2B%2B)%7Bvar%20b%3D%24(n%5Be%5D).find(%22td%22).not(%22.gpa-checkbox%22)%3Bb%3D%7Bid%3Ae%2B1%2Csemester%3A%24(b%5B0%5D).text().trim().normalize()%2Ccourse%3A%24(b%5B1%5D).text().trim().normalize()%2Ccredit%3AparseInt(%24(b%5B2%5D).text().trim().normalize())%2C%22class%22%3A%24(b%5B3%5D).text().trim().normalize()%2Cldcode%3A%24(b%5B4%5D).text().trim().normalize()%2Cscore%3AparseFloat(%24(b%5B5%5D).text().trim().normalize())%2Cnote%3A%24(b%5B6%5D).text().trim().normalize()%2Cinclude%3A!0%2CwhyExclude%3A%22%22%2CisAbsent%3A%22V%5Cu1eafng%22%3D%3D%24(b%5B5%5D).text().trim().normalize()%2Cletter%3A%22%22%2CfourRounding%3A0%7D%3B%24(n%5Be%5D).attr(%22id%22%2Cb.id)%3Bif(b.credit)if(b.isAbsent)b.score%3D0%2Cb.include%3D!1%2Cb.whyExclude%2B%3D%22%5Cu0110i%5Cu1ec3m%20nh%5Cu1ecf%20h%5Cu01a1n%205%2C%20ch%5Cu01b0a%20qua%20m%5Cu00f4n.%20%22%3Belse%20if(b.score)if(5%3Eb.score%7C%7Cb.isAbsent)b.include%3D!1%2Cb.whyExclude%2B%3D%22%5Cu0110i%5Cu1ec3m%20nh%5Cu1ecf%20h%5Cu01a1n%205%2C%20ch%5Cu01b0a%20qua%20m%5Cu00f4n.%20%22%3Belse%7Bfor(var%20h%3D!0%2Cf%3D0%3Bf%3Cm.length%3Bf%2B%2B)if(b.course.includes(m%5Bf%5D))%7Bh%3D!1%3Bb.whyExclude%2B%3D%22H%5Cu1ecdc%20ph%5Cu1ea7n%20kh%5Cu00f4ng%20t%5Cu00ednh%20trong%20GPA.%20%22%3Bbreak%7Db.include%3Dh%7Delse%20b.score%3D0%2Cb.include%3D!1%2Cb.whyExclude%2B%3D%22Ch%5Cu01b0a%20ho%5Cu1eb7c%20kh%5Cu00f4ng%20c%5Cu00f3%20%5Cu0111i%5Cu1ec3m%22%3Belse%20b.credit%3D0%2Cb.include%3D!1%2Cb.whyExclude%2B%3D%22H%5Cu1ecdc%20ph%5Cu1ea7n%20kh%5Cu00f4ng%20t%5Cu00edn%20ch%5Cu1ec9%22%3Bfor(h%3D0%3Bh%3Ck.length%3Bh%2B%2B)k%5Bh%5D.course%3D%3Db.course%26%26(k%5Bh%5D.include%3D!1%2Ck%5Bh%5D.whyExclude%3D%22%5Cu0110%5Cu00e3%20h%5Cu1ecdc%20l%5Cu1ea1i.%20%22)%3Bk.push(b)%3Bb.include%7C%7Cz.push(b)%7D%7D%7Dfunction%20d()%7Bu.ctl00%24ContentPlaceHolder1%24ctl00%24cboNamHoc_gvDKHPLichThi%24ob_CbocboNamHoc_gvDKHPLichThiTB%3D%22--T%5Cu1ea5t%20c%5Cu1ea3--%22%3Bu.ctl00%24ContentPlaceHolder1%24ctl00%24cboNamHoc_gvDKHPLichThi%24ob_CbocboNamHoc_gvDKHPLichThiSIS%3D%220%22%3Bu.ctl00%24ContentPlaceHolder1%24ctl00%24cboNamHoc_gvDKHPLichThi%3D%220%22%3Bu.ctl00%24ContentPlaceHolder1%24ctl00%24cboHocKy_gvDKHPLichThi%24ob_CbocboHocKy_gvDKHPLichThiTB%3D%220%22%3Bu.ctl00%24ContentPlaceHolder1%24ctl00%24cboHocKy_gvDKHPLichThi%24ob_CbocboHocKy_gvDKHPLichThiSIS%3D%220%22%3Bu.ctl00%24ContentPlaceHolder1%24ctl00%24cboHocKy_gvDKHPLichThi%3D%22%22%3Bu.ctl00%24ContentPlaceHolder1%24ctl00%24btnXemDiemThi%3D%22Xem%20K%5Cu1ebft%20Qu%5Cu1ea3%20H%5Cu1ecdc%20T%5Cu1eadp%22%3Bvar%20m%3D%24(%22%23lich-thi-dkhp%22)%5B0%5D%3Bm%26%26!%24(%22%23loading-text%22)%5B0%5D%26%26m.prepend(%24('%3Cdiv%20id%3D%22loading-text%22%20style%3D%22font-size%3A20px%3B%20color%3A%231B486A%3Btext-align%3Acenter%3Bmargin%3A10px%3B%22%3ECh%5Cu1edd%20m%5Cu1ed9t%20ch%5Cu00fat...%3C%2Fdiv%3E')%5B0%5D)%3Breturn%20new%20Promise(function(e%2Cb)%7B%24.ajax(%7Btype%3A%22POST%22%2Curl%3A%22%2FSinhVien.aspx%3Fpid%3D211%22%2Cdata%3Au%2Csuccess%3Afunction(h)%7Bvar%20f%3D%24.parseHTML(h)%3B(f%3D%24(f).find(%22input%5Bname%3D'ctl00%24ContentPlaceHolder1%24ctl00%24cboNamHoc_gvDKHPLichThi%24ob_CbocboNamHoc_gvDKHPLichThiTB'%5D%22))%26%26console.log(%24(f%5B0%5D).attr(%22value%22))%3Bdocument.open()%3Bdocument.write(h)%3Bdocument.close()%3Bvar%20r%3D!1%3Bwindow.onload%3Dfunction()%7Br%3D!0%3Be()%7D%3BsetTimeout(function()%7Br%7C%7Ce()%7D%2C2E3)%7D%7D)%7D)%7Dvar%20g%2Cl%2Cq%2Ct%2Cu%2CB%2Cp%2Cz%2Ck%2Cn%2CC%2CD%2CA%2CE%2Cx%2Cv%2CG%2Cy%2CF%3Breturn%20%24jscomp.asyncExecutePromiseGeneratorProgram(function(m)%7Bif(1%3D%3Dm.nextAddress)%7Bconsole.clear()%3Bg%3Dwindow.location.href%3Bl%3D%2F.portal(%5B1-9%5D%7C)%5C.hcmus%5C.edu%5C.vn%5C%2FSinhVien%5C.aspx%5C%3F(.*)pid%3D211%2F%3Bif(!g.match(l))return%20q%3D%2F.portal(%5B1-9%5D%7C)%5C.hcmus%5C.edu%5C.vn%2F%2Cg.match(q)%26%26alert('Vui%20l%5Cu00f2ng%20%5Cu0111i%20t%5Cu1edbi%20trang%20%22Tra%20c%5Cu1ee9u%20K%5Cu1ebft%20qu%5Cu1ea3%20h%5Cu1ecdc%20t%5Cu1eadp%22%20tr%5Cu01b0%5Cu1edbc')%2Cm%5B%22return%22%5D()%3Bt%3D%24(%22%23aspnetForm%22).serializeArray()%3Bu%3Dt.reduce(function(e%2Cb)%7Be%5Bb.name%5D%3Db.value%3Breturn%20e%7D%2C%7B%7D)%3Bif(B%3D%24('input%5Bname%3D%22ctl00%24ContentPlaceHolder1%24ctl00%24cboHocKy_gvDKHPLichThi%24ob_CbocboHocKy_gvDKHPLichThiTB%22%5D'))B%3DB%5B0%5D%3Belse%20return%20m%5B%22return%22%5D()%3Bp%3Dnull%3Bz%3D%5B%5D%3Bk%3D%5B%5D%3Bn%3Dnull%3BC%3DlocalStorage.getItem(%22isCalSemester%22)%3BD%3D!1%3BA%3Dfunction()%7Bthis.removedCoursesSize%3Dthis.notPassGPA%3Dthis.fourGPA%3Dthis.gpa%3Dthis.notPassTotalScore%3Dthis.totalFourScores%3Dthis.totalScores%3Dthis.notPassCredits%3Dthis.totalCredits%3D0%7D%3BA.prototype.calculateGPA%3Dfunction()%7Bconsole.clear()%3Bfor(var%20e%3D%22%25c%20%5Cu0110i%5Cu1ec3m%20t%5Cu00ednh%20th%5Cu1ebf%20n%5Cu00e0o%20nh%5Cu1edf%20%3F%25c%20%5Cn%5Cn%22%2Cb%3D%5B%22font-size%3A16px%22%2C%22font-size%3Anormal%22%5D%2Ch%3D0%3Bh%3Ck.length%3Bh%2B%2B)%7Bvar%20f%3Dk%5Bh%5D%3Bf.include%3F(this.totalCredits%2B%3Df.credit%2Cthis.totalScores%2B%3Df.credit*f.score%2Cthis.totalFourScores%2B%3Df.credit*f.fourRounding%2Ce%2B%3D%22%20%22%2Bf.course%2B%22%3A%25c%20%22%2Bf.score%2B%22%25c%20x%25c%20%22%2Bf.credit%2B%22%25c%20%3D%25c%20%22%2Bf.credit*f.score%2B%22%25c%20%5Cn%22%2Cb.push(%22font-weight%3Abold%3B%22)%2Cb.push(%22font-weight%3Anormal%3B%22)%2Cb.push(%22font-weight%3Abold%3B%22)%2Cb.push(%22font-weight%3Anormal%3B%22)%2Cb.push(%22font-weight%3Abold%3B%22)%2Cb.push(%22font-weight%3Anormal%3B%22))%3A(f.whyExclude.includes(%225%22)%26%26(this.notPassCredits%2B%3Df.credit%2Cthis.notPassTotalScore%2B%3Df.credit*f.score)%2Ce%2B%3D%22%25c%20%22%2Bf.course%2B%22%3A%20%22%2Bf.score%2B%22%20x%20%22%2Bf.credit%2B%22%25c%20%5Cn%22%2Cb.push(%22color%3Aorange%3Btext-decoration%3A%20line-through%3B%22)%2Cb.push(%22color%3Ablack%3B%22))%7Dthis.gpa%3Dthis.totalScores%2Fthis.totalCredits%3Bthis.fourGPA%3Dthis.totalFourScores%2Fthis.totalCredits%3Bthis.notPassGPA%3D(this.totalScores%2Bthis.notPassTotalScore)%2F(this.totalCredits%2Bthis.notPassCredits)%3Bfor(h%3D0%3Bh%3Ck.length%3Bh%2B%2B)k%5Bh%5D.include%7C%7Cthis.removedCoursesSize%2B%2B%3Bconsole.log(%22%25c%20%5Cn%20Ch%5Cu00e0o%20nh%5Cu00e9%2C%20GPA%20n%5Cu00e8%3A%5Cn%20%25c%22%2Bthis.gpa%2B%22%5Cn%22%2C%22color%3Ablack%22%2C%22color%3Ablue%3B%20font-size%3A%2030px%3B%22)%3Bconsole.log(%22%25c%20%5Cn%20T%5Cu1ed5ng%20t%5Cu00edn%20ch%5Cu1ec9%3A%5Cn%20%25c%22%2Bthis.totalCredits%2B%22%5Cn%22%2C%22color%3Ablack%22%2C%22color%3Ablue%3B%20font-size%3A%2030px%3B%22)%3Bconsole.log(%22%25c%20%5Cn%20T%5Cu1ed5ng%20%5Cu0111i%5Cu1ec3m%3A%5Cn%20%25c%22%2Bthis.totalScores%2B%22%5Cn%22%2C%22color%3Ablack%22%2C%22color%3Ablue%3B%20font-size%3A%2030px%3B%22)%3Bconsole.log(%22%25c%20%5Cn%20T%5Cu1ed5ng%20h%5Cu1ecdc%20ph%5Cu1ea7n%3A%5Cn%20%25c%22%2Bk.length%2B%22%5Cn%22%2C%22color%3Ablack%22%2C%22color%3Ablue%3B%20font-size%3A%2030px%3B%22)%3Bconsole.log(%22%25c%20%5Cn%20T%5Cu1ed5ng%20h%5Cu1ecdc%20ph%5Cu1ea7n%20trong%20GPA%3A%5Cn%20%25c%22%2B(k.length-this.removedCoursesSize)%2B%22%5Cn%22%2C%22color%3Ablack%22%2C%22color%3Ablue%3B%20font-size%3A%2030px%3B%22)%3Be%2B%3D%22-------------%5CnGPA%20%3A%20%25c%20%22%2Bthis.totalScores%2B%22%20%2F%20%22%2Bthis.totalCredits%2B%22%20%3D%20%22%2Bthis.gpa%3Bb.push(%22font-weight%3Abold%22)%3Bh%3D%22%25c%20Kh%5Cu00f4ng%20bao%20g%5Cu1ed3m%20nh%5Cu1eefng%20h%5Cu1ecdc%20ph%5Cu1ea7n%20sau%20%5Cu0111%5Cu00e2y%3A%20%5Cn%5Cn%25c%22%3Bf%3D%5B%22font-size%3A16px%22%2C%22font-size%3Anormal%22%5D%3Bfor(var%20r%3D0%3Br%3Cz.length%3Br%2B%2B)h%2B%3D%22%25c%20%20lo%5Cu1ea1i%20b%5Cu1ecf%3A%20%25c%22%2Bz%5Br%5D.course%2B%22%20(%22%2Bz%5Br%5D.semester%2B%22)%5Cn%25c%20l%5Cu00fd%20do%3A%20%25c%22%2Bz%5Br%5D.whyExclude%2B%22%5Cn%5Cn%25c%22%2Cf.push(%22color%3Ablack%22)%2Cf.push(%22color%3Ablue%22)%2Cf.push(%22color%3Ablack%22)%2Cf.push(%22color%3Ared%22)%2Cf.push(%22color%3Ablack%22)%3Bh%2B%3D%22%25c%20%20%22%2Bthis.removedCoursesSize%2B%22%20h%5Cu1ecdc%20ph%5Cu1ea7n%20%5Cu0111%5Cu00e3%20lo%5Cu1ea1i%20b%5Cu1ecf.%25c%5Cn%22%3Bf.push(%22color%3Ared%22)%3Bf.push(%22color%3Ablack%22)%3Bconsole.log.apply(console%2C%5Bh%5D.concat(%24jscomp.arrayFromIterable(f)))%3Bconsole.log.apply(console%2C%5Be%5D.concat(%24jscomp.arrayFromIterable(b)))%3Bconsole.log(%22(K%5Cu00e9o%20l%5Cu00ean%20%5Cu0111%5Cu1ec3%20xem%20chi%20ti%5Cu1ebft)%22)%7D%3BA.prototype.formatCoursesTableAndCreateResultTable%3Dfunction()%7Bvar%20e%3Dp.find(%22thead%20tr%22)%5B0%5D%2Cb%3D%24(%24(e).find(%22th%22)%5B0%5D).clone()%3Bif(0%3D%3DD)%7BD%3D!0%3B%24(b).attr(%22title%22%2C%22T%5Cu00ednh%20hay%20kh%5Cu00f4ng%20t%5Cu00ednh%20h%5Cu1ecdc%20ph%5Cu1ea7n%20n%5Cu00e0y%20trong%20GPA%22)%3B%24(b).children().html(%22Trong%20GPA%22)%3B%24(e).prepend(b)%3Bfor(var%20h%3D0%3Bh%3Cn.length%3Bh%2B%2B)%24(n%5Bh%5D).prepend('%3Ctd%20class%3D%20%22center%20gpa-checkbox%22%20style%3D%22width%3A60px%3B%22%20%3E%3Cinput%20type%3D%22checkbox%22'%2B(k%5Bh%5D.include%3F%22%20checked%20%22%3A%22%22)%2B%22%20%2F%3E%3Cdiv%20hidden%3E%22%2B(k%5Bh%5D.include%3F1%3A0)%2B%22%3C%2Fdiv%3E%3C%2Ftd%3E%22)%7Dh%3D%24(%22%23lich-thi-dkhp%22)%5B0%5D%3B%24(%22%23tbGPA%22).remove()%3Bvar%20f%3D%24('%3Cfieldset%20id%3D%22tbGPA%22%3E%3Clegend%3ETh%5Cu1ed1ng%20k%5Cu00ea%20GPA%3C%2Flegend%3E%3Cdiv%20id%3D%22tbGPA_wrapper%22%20class%3D%22dataTables_wrapper%22%20rold%3D%22grid%22%3E%3Ctable%20id%3D%22tbGPA%22%20class%3D%22dkhp-table%20dataTable%22%3E%3Cthead%3E%3C%2Fthead%3E%3Ctbody%20role%3D%22alert%22%20aria-live%3D%22polite%22%20aria-relevant%3D%22all%22%3E%3C%2Ftbody%3E%3C%2Ftable%3E%3C%2Fdiv%3E%3Cp%20style%3D%22margin-top%3A%2010px%3B%20color%3A%20blue%3B%22%3E%3Cstrong%3E(*)%3C%2Fstrong%3E%3A%20Nh%5Cu1ea5n%20Ctr%2BShift%2BI%20v%5Cu00e0%20ch%5Cu1ecdn%20tab%20Console%20%5Cu0111%5Cu1ec3%20xem%20chi%20ti%5Cu1ebft%20t%5Cu00ednh%20to%5Cu00e1n.%3Cbr%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3BThang%20%5Cu0111i%5Cu1ec3m%20ch%5Cu1eef%20v%5Cu00e0%20Thang%20%5Cu0111i%5Cu1ec3m%204%20%5Cu0111%5Cu01b0%5Cu1ee3c%20quy%20%5Cu0111%5Cu1ed5i%20d%5Cu1ef1a%20theo%20S%5Cu1ed5%20tay%20sinh%20vi%5Cu00ean%20Kh%5Cu00f3a%202022.%3Cbr%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3BN%5Cu1ebfu%20b%5Cu1ea1n%20th%5Cu1ea5y%20h%5Cu1eefu%20%5Cu00edch%2C%20h%5Cu00e3y%20t%5Cu1eb7ng%20cho%20t%5Cu00e1c%20gi%5Cu1ea3%20g%5Cu1ed1c%20m%5Cu1ed9t%20Star%20%3Ca%20href%3D%22https%3A%2F%2Fgithub.com%2Fdtrung98%2FGPABookmarklet%22%3ET%5Cu1ea1i%20%5Cu0110%5Cu00e2y%3C%2Fa%3E%20ho%5Cu1eb7c%20%3Ca%20href%3D%22https%3A%2F%2Fgithub.com%2FDreamyWanderer%2FGPABookmarklet_Maintanence%22%3ET%5Cu1ea1i%20%5Cu0110%5Cu00e2y%3C%2Fa%3E%20nh%5Cu00e9%20%5E%5E%3Cbr%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3BVui%20l%5Cu00f2ng%20b%5Cu00e1o%20l%5Cu1ed7i%20ho%5Cu1eb7c%20ki%5Cu1ebfn%20ngh%5Cu1ecb%20%3Ca%20href%3D%22https%3A%2F%2Fgithub.com%2FDreamyWanderer%2FGPABookmarklet_Maintanence%2Fissues%22%3ET%5Cu1ea1i%20%5Cu0110%5Cu00e2y%3C%2Fa%3E%20%3C%2Fp%3E%3C%2Ffieldset%3E')%2Cr%3D%24(f).find(%22thead%22)%5B0%5D%2Cw%3D%24(f).find(%22tbody%22)%5B0%5D%3Be%3D%24(%24(e).find(%22th%22)%5B2%5D).clone()%3B%24(e).attr(%22title%22%2C%22T%5Cu00ean%20m%5Cu1ee5c%22)%3B%24(e).children().html(%22T%5Cu00ean%20m%5Cu1ee5c%22)%3Bb%3Db.clone()%3B%24(b).attr(%22title%22%2C%22Gi%5Cu00e1%20tr%5Cu1ecb%22)%3B%24(b).children().html(%22Gi%5Cu00e1%20tr%5Cu1ecb%22)%3B%24(r).append(e)%3B%24(r).append(b)%3B%24(w).append('%3Ctr%20class%3D%22odd%22%3E%3Ctd%20class%3D%22left%20%22%3E%5Cu0110i%5Cu1ec3m%20trung%20b%5Cu00ecnh%20t%5Cu00edch%20l%5Cu0169y%20(GPA)%3C%2Ftd%3E%3Ctd%20class%3D%22center%20gpa%22%20id%3D%22calGPA%22%3E%3Cb%3E'%2BMath.round(1E3*this.gpa)%2F1E3%2B%22%3C%2Fb%3E%3C%2Ftd%3E%3C%2Ftr%3E%22)%3B%24(w).append('%3Ctr%20class%3D%22odd%22%3E%3Ctd%20class%3D%22left%20%22%3E%5Cu0110i%5Cu1ec3m%20trung%20b%5Cu00ecnh%20t%5Cu00edch%20l%5Cu0169y%20(GPA)%20h%5Cu1ec7%204%3C%2Ftd%3E%3Ctd%20class%3D%22center%20gpa%22%20id%3D%22calGPA%22%3E%3Cb%3E'%2BMath.round(4*this.gpa%2F10*1E3)%2F1E3%2B%22%3C%2Fb%3E%3C%2Ftd%3E%3C%2Ftr%3E%22)%3B%24(w).append('%3Ctr%20class%3D%22odd%22%3E%3Ctd%20class%3D%22left%20%22%3E%5Cu0110i%5Cu1ec3m%20trung%20b%5Cu00ecnh%20t%5Cu00edch%20l%5Cu0169y%20(GPA)%20h%5Cu1ec7%204%20(theo%20STSV)%3C%2Ftd%3E%3Ctd%20class%3D%22center%20gpa%22%20id%3D%22calGPA%22%3E%3Cb%3E'%2BMath.round(1E3*this.fourGPA)%2F1E3%2B%22%3C%2Fb%3E%3C%2Ftd%3E%3C%2Ftr%3E%22)%3B%24(w).append('%3Ctr%20class%3D%22odd%22%3E%3Ctd%20class%3D%22left%20%22%3E%5Cu0110i%5Cu1ec3m%20trung%20b%5Cu00ecnh%20h%5Cu1ecdc%20t%5Cu1eadp%3C%2Ftd%3E%3Ctd%20class%3D%22center%20gpa%22%20id%3D%22calGPA%22%3E'%2BMath.round(1E3*this.notPassGPA)%2F1E3%2B%22%3C%2Ftd%3E%3C%2Ftr%3E%22)%3B%24(w).append('%3Ctr%20class%3D%22even%22%3E%3Ctd%20class%3D%22left%22%3ET%5Cu1ed5ng%20t%5Cu00edn%20ch%5Cu1ec9%20%5Cu0111%5Cu00e3%20t%5Cu00edch%20lu%5Cu1ef9%3C%2Ftd%3E%3Ctd%20class%3D%22center%20gpa%22%20id%3D%22calSumCredit%22%3E'%2Bthis.totalCredits%2B%22%20t%5Cu00edn%20ch%5Cu1ec9%3C%2Ftd%3E%3C%2Ftr%3E%22)%3B%24(w).append('%3Ctr%20class%3D%22odd%22%3E%3Ctd%20class%3D%22left%22%3ET%5Cu1ed5ng%20%5Cu0111i%5Cu1ec3m%20%5Cu0111%5Cu00e3%20t%5Cu00edch%20l%5Cu0169y%3C%2Ftd%3E%3Ctd%20class%3D%22center%20gpa%22%20id%3D%22sumScore%22%3E'%2Bthis.totalScores%2B%22%3C%2Ftd%3E%3C%2Ftr%3E%22)%3B%24(w).append('%3Ctr%20class%3D%22even%22%3E%3Ctd%20class%3D%22left%22%3ES%5Cu00f4%20h%5Cu1ecdc%20ph%5Cu1ea7n%20%5Cu0111%5Cu00e3%20h%5Cu1ecdc%3C%2Ftd%3E%3Ctd%20class%3D%22center%20gpa%22%20id%3D%22sumCourse%22%3E'%2Bk.length%2B%22%20h%5Cu1ecdc%20ph%5Cu1ea7n%3C%2Ftd%3E%3C%2Ftr%3E%22)%3B%24(w).append('%3Ctr%20class%3D%22odd%22%3E%3Ctd%20class%3D%22left%22%3ES%5Cu1ed1%20h%5Cu1ecdc%20ph%5Cu1ea7n%20t%5Cu00ednh%20trong%20GPA%3C%2Ftd%3E%3Ctd%20class%3D%22center%20gpa%22%20id%3D%22sumCalCourse%22%3E'%2B(k.length-this.removedCoursesSize)%2B%22%20h%5Cu1ecdc%20ph%5Cu1ea7n%3C%2Ftd%3E%3C%2Ftr%3E%22)%3B%24(h).prepend(f)%3Bfor(b%3D0%3Bb%3Cn.length%3Bb%2B%2B)k%5Bb%5D.include%3F%22%22%3D%3Dk%5Bb%5D.whyExclude%3F%24(n%5Bb%5D).removeAttr(%22style%22)%3A%24(n%5Bb%5D).attr(%22style%22%2C%22color%3Ayellow%3Btext-decoration%3A%20line-through%3B%22)%3Ak%5Bb%5D.whyExclude.includes(%22kh%5Cu00f4ng%20t%5Cu00ednh%22)%3F%24(n%5Bb%5D).attr(%22style%22%2C%22color%3Ablue%3Btext-decoration%3A%20line-through%3B%22)%3A%22%22%3D%3Dk%5Bb%5D.whyExclude%3F%24(n%5Bb%5D).attr(%22style%22%2C%22color%3Agrey%3Btext-decoration%3A%20line-through%3B%22)%3A%24(n%5Bb%5D).attr(%22style%22%2C%22color%3Ared%3Btext-decoration%3A%20line-through%3B%22)%7D%3BE%3Dfunction(e%2Cb)%7Bthis.data%3De%3Bthis.cal%3Db%7D%3BE.prototype.saveToFileCSV%3Dfunction()%7Bvar%20e%3D-1%2Cb%3D%22T%5Cu00ean%20m%5Cu00f4n%20h%5Cu1ecdc%2C%20S%5Cu1ed1%20t%5Cu00edn%20ch%5Cu1ec9%2C%20%5Cu0110i%5Cu1ec3m%2C%20%5Cu0110i%5Cu1ec3m%20ch%5Cu1eef%2C%20%5Cu0110i%5Cu1ec3m%204%2C%20H%5Cu1ecdc%20k%5Cu1ef3%2C%20L%5Cu1edbp%2C%20Ghi%20ch%5Cu00fa%5Cn%22%3Bthis.data.forEach(function(f)%7Bf.include%26%26(b%2B%3Df.course%2B%22%2C%20%22%2Bf.credit%2B%22%2C%20%22%2Bf.score%2B%22%2C%20%22%2Bf.letter%2B%22%2C%20%22%2Bf.fourRounding%2B%22%2C%20%22%2Bf.semester%2B%22%2C%20%22%2Bf%5B%22class%22%5D%2B%22%2C%20%22%2Bf.note%2B%22%5Cn%22%2Ce%2B%2B)%7D)%3Bb%2B%3D%22%5Cu0110i%5Cu1ec3m%20trung%20b%5Cu00ecnh%20t%5Cu00edch%20l%5Cu0169y%20(GPA)%3A%20%22%2Bthis.cal.gpa%2B%22%5Cn%22%3Bb%2B%3D%22%5Cu0110i%5Cu1ec3m%20trung%20b%5Cu00ecnh%20t%5Cu00edch%20l%5Cu0169y%20(GPA)%20h%5Cu1ec7%204%3A%20%22%2B4*this.cal.gpa%2F10%2B%22%5Cn%22%3Bb%2B%3D%22%5Cu0110i%5Cu1ec3m%20trung%20b%5Cu00ecnh%20t%5Cu00edch%20l%5Cu0169y%20(GPA)%20h%5Cu1ec7%204%20(theo%20STSV)%3A%20%22%2Bthis.cal.fourGPA%2B%22%5Cn%22%3Bb%2B%3D%22%5Cu0110i%5Cu1ec3m%20trung%20b%5Cu00ecnh%20h%5Cu1ecdc%20t%5Cu1eadp%3A%20%22%2Bthis.cal.notPassGPA%2B%22%5Cn%22%3Bb%2B%3D%22S%5Cu1ed1%20t%5Cu00edn%20ch%5Cu1ec9%20t%5Cu00edch%20l%5Cu0169y%3A%20%22%2Bthis.cal.totalCredits%2B%22%5Cn%22%3Bb%2B%3D%22T%5Cu1ed5ng%20%5Cu0111i%5Cu1ec3m%20t%5Cu00edch%20l%5Cu0169y%3A%20%22%2Bthis.cal.totalScores%2B%22%5Cn%22%3Bb%2B%3D%22T%5Cu1ed5ng%20h%5Cu1ecdc%20ph%5Cu1ea7n%3A%20%22%2Bthis.data.length%2B%22%5Cn%22%3Bb%2B%3D%22T%5Cu1ed5ng%20h%5Cu1ecdc%20ph%5Cu1ea7n%20trong%20GPA%3A%20%22%2B(this.data.length-this.cal.removedCoursesSize)%2B%22%5Cn%22%3Bvar%20h%3Ddocument.createElement(%22a%22)%3Bh.href%3D%22data%3Atext%2Fcsv%3Bcharset%3Dutf-8%2C%22%2BencodeURIComponent(%22%5Cufeff%22%2Bb)%3Bh.target%3D%22_blank%22%3Bh.download%3D%22GPA.csv%22%3Bh.click()%7D%3Breturn%22true%22%3D%3DC%3Fm.jumpTo(2)%3Am.yield(d()%2C2)%7Dc()%3Ba()%3Bx%3Dnew%20A%3Bx.calculateGPA()%3Bx.formatCoursesTableAndCreateResultTable()%3Bp.dataTable().fnDestroy()%3Bp.dataTable(%7BbPaginate%3A!1%2CbJQueryUI%3A!0%2CbAutoWidth%3A!1%2CaaSorting%3A%5B%5B1%2C%22asc%22%5D%5D%2CaoColumnDefs%3A%5B%7BsWidth%3A%2250%25%22%2CaTargets%3A%5B2%5D%7D%5D%7D)%3B%24(%22%23tbDiemThiGK%22).off(%22change%22%2C'input%5Btype%3D%22checkbox%22%5D')%3B%24(%22%23tbDiemThiGK%22).on(%22change%22%2C'input%5Btype%3D%22checkbox%22%5D'%2Cfunction()%7Bvar%20e%3D%24(this).closest(%22tr%22)%2Cb%3D%24(e).attr(%22id%22)%2Ch%3D%24(e).find(%22input%5Btype%3D'checkbox'%5D%22)%3Bk%5Bb-1%5D.include%3D%24(this).is(%22%3Achecked%22)%3B%24(this).siblings().first().text(%24(this).is(%22%3Achecked%22)%3F1%3A0)%3B%24(h).attr(%22checked%22%2C%24(this).is(%22%3Achecked%22))%3Bp.fnUpdate(e.children().first().html()%2Ce%5B0%5D%2C0%2C!1%2C!1)%3Bx%3Dnew%20A%3Bx.calculateGPA()%3Bx.formatCoursesTableAndCreateResultTable()%7D)%3B%24(%22%23saveCoursesList%22)%5B0%5D%7C%7C(G%3Dnew%20E(k%2Cx)%2Cv%3D%24(%22%23ob_iBbtnXemDiemThiContainer%22).clone().attr(%22id%22%2C%22saveCoursesList%22)%2C%24(v).attr(%22style%22%2C%22width%3A%2025%25%22)%2C%24(v).css(%7B%22margin-bottom%22%3A%2210px%22%7D)%2C%24(%24(v).find(%22.ob_iBC%22)%5B0%5D).text(%22L%5Cu01b0u%20danh%20s%5Cu00e1ch%20h%5Cu1ecdc%20ph%5Cu1ea7n%20%5Cu0111%5Cu00e3%20ch%5Cu1ecdn%22)%2C%24(v).insertBefore(%22%23tbDiemThiGK_wrapper%22)%2C%24(v).click(function(e)%7Be.preventDefault()%3BG.saveToFileCSV()%7D))%3B%24(%22%23toggleLetterGrade%22)%5B0%5D%7C%7C(y%3D%24(v).clone().attr(%22id%22%2C%22toggleLetterGrade%22)%2C%24(y).attr(%22style%22%2C%22width%3A%2025%25%22)%2C%24(y).css(%7B%22margin-bottom%22%3A%2210px%22%7D)%2C%24(%24(y).find(%22.ob_iBC%22)%5B0%5D).text(%22Hi%5Cu1ec7n%2F%5Cu1ea8n%20Thang%20Ch%5Cu1eef%2F4%22)%2C%24(v).after(y)%2C%24(y).click(function(e)%7Be.preventDefault()%3Be%3Dp.fnSettings().aoColumns%5B7%5D.bVisible%3Bp.fnSetColumnVis(7%2C!e)%3Bp.fnSetColumnVis(8%2C!e)%7D)%2C%24(y).click())%3B%24(%22%23isCalSemester%22)%5B0%5D%7C%7C(F%3D%24('%3Cinput%20type%3D%22checkbox%22%20id%3D%22isCalSemester%22%3E%3Clabel%20for%3D%22isCalSemester%22%3E%20T%5Cu00ednh%20theo%20h%5Cu1ecdc%20k%5Cu1ef3%3C%2Flabel%3E%3Cbr%3E%3Cbr%3E')%2C%22true%22%3D%3DC%26%26%24(F).attr(%22checked%22%2C!0)%2C%24(%22%23ctl00_ContentPlaceHolder1_pnlControls%20div%3Afirst%22).after(F)%2C%24(%22%23isCalSemester%22).change(function()%7BlocalStorage.setItem(%22isCalSemester%22%2C%24(this).is(%22%3Achecked%22))%7D))%3Bm.jumpToEnd()%7D)%7D)()%3Bvoid+0"> Khtn GPA v 2.0 </a>
<br>
<br>
<hr>
<a class="back" href="index.html"> Hướng dẫn chạy trên máy tính ></a>
<br>
<br>
<br>
<a class="back" href="https://portal6.hcmus.edu.vn/SinhVien.aspx?pid=211" target="_blank"> Đi tới Portal ></a>
</div>
</body>
</html>